当前位置:编程学习 > C#/ASP.NET >>

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

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是说传的参数类型不对,到底那个类型不对啊?请大家帮帮忙。 --------------------编程问答-------------------- 这好像很难啊!我也学习学些。希望楼主尽快解决这个问题。谢谢。
要用API好像。 --------------------编程问答-------------------- 调完查一下你的byte[]数据,一般c++ byte* 在c#里面用byte[] 会出问题。
用intptr代替,然后把得到的非托管指针数据复制到托管内存数组里面。
补充:.NET技术 ,  其他语言
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,