读取dll乱码问题

ROE0901 2012-03-03 12:25:41
先看代码听我详细解释

[DllImport("fzyktclient.dll")]
public extern static int ykt_readopencard4442_local(int offset, int length,StringBuilder pData, StringBuilder pWarnmsg, StringBuilder pErrmsg);

[DllImport("fzyktclient.dll", CharSet = CharSet.Ansi)]
public extern static int ykt_readopencard4442_local(int offset, int length, ref byte pData, StringBuilder pWarnmsg, StringBuilder pErrmsg);


我还特意写了连个方法。第一次我用第一个。读出来是乱码。于是我就百度 。。听说用字节可以。就是第二个方法。但是发现效果还是一样还是乱码。帮助文档是这么说的

函数声明:int ykt_readopencard4442_local(int offset, int length, cahr *pData, cahr *pWarnmsg, cahr *pErrmsg);
参数说明:名称:Pdata 类型长度:char(1024) 说明:读取数据缓冲区(这个我估计已经读出来了吧我直接接受就行)
备注:以十六进制存储

怎么能不乱码 求解释 求高手
...全文
306 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-03-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinajiyong 的回复:]

[DllImport("fzyktclient.dll",CharSet = CharSet.Auto)]//设置字符集自动
[/Quote]
错了,没注意,char*类型数据作为输出参数时,在c#中数据类型要写成StringBuilder
int ykt_readopencard4442_local(int offset, int length, char *pData, cha
r *pWarnmsg, char *pErrmsg);
改为
[DllImport("fzyktclient.dll", CharSet = CharSet.Ansi)]
public extern static int ykt_readopencard4442_local(int offset, int length, StringBuilder pData, StringBuilder pWarnmsg, StringBuilder pErrmsg);
EnForGrass 2012-03-03
  • 打赏
  • 举报
回复
[DllImport("fzyktclient.dll",CharSet = CharSet.Auto)]//设置字符集自动

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧