c#调用c++编写的DLL 问题

mengfangy 2012-11-22 10:37:35
C++原型:
int WINAPI FunctionS(WORD f,BYTE *param1,WORD plen1,BYTE *param2,WORD *plen2)

我写的C#调用:
[DllImport("PICK.dll")]
static extern int SendCmd(ushort f, ref byte[] param1, ushort plen1, ref byte[] param2, ref ushort plen2);

调用时:
byte[] param1= new byte[100];
param1[0] = 0x0c;
param1[1] = 0x00;
param1[2] = Convert .ToByte((Convert.ToInt16(this.txt_StepVal1.Text)>> 8) & 0xff);//取改数的高八位
param1[3] = Convert .ToByte (Convert.ToInt16(this.txt_StepVal1.Text) & 0xff););//取改数的低八位

byte[] param2= new byte[100];
ushort plen1 = 4;
ushort plen2 =0 ;
int ret = 2;
ret = SendCmd(0x00, ref param1, plen1, ref param2, ref plen2);
运行时系统没有报错, 但是该函数运行成功的话应该返回0,现在返回的是12,问了写该DLL的人说返回12是说传的参数类型不对,到底那个类型不对啊?请大家帮帮忙。
...全文
263 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_为了部落 2013-01-18
  • 打赏
  • 举报
回复
调完查一下你的byte[]数据,一般c++ byte* 在c#里面用byte[] 会出问题。 用intptr代替,然后把得到的非托管指针数据复制到托管内存数组里面。
luobing261314 2013-01-15
  • 打赏
  • 举报
回复
这好像很难啊!我也学习学些。希望楼主尽快解决这个问题。谢谢。 要用API好像。

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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