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

C#调用dll类型转换问题

dll中有这样一个函数:
long WINAPI OpenComPort(long Port,unsigned char *ComAdr,unsigned char *FrmHandle);

我在c#中这样申明
[DllImport("RR9000.dll")]
 public static extern Int32 OpenComPort(Int32 port, byte[] add, byte[] frmHandle);

程序中这样调用:
byte[] handle=new byte[10];
byte[] b ={ 0xFF};
Int32 l = declare.OpenComPort(1, b, handle);
但报错,提示可能类型不匹配。

主要问题应该是
unsigned char *ComAdr,unsigned char *FrmHandle两个参数如何传递。
该dll的函数中说明ComAdr是输入/输出参数;FrmHandle输出参数;

我测试了别的方式也报错,请问正确的如何传递?


--------------------编程问答-------------------- --------------------编程问答-------------------- ding --------------------编程问答-------------------- long 应该是int64吧 --------------------编程问答-------------------- stringbuilder吧。 --------------------编程问答-------------------- 绑定  ~  我这问题也一直很迷糊 --------------------编程问答-------------------- 给点建议,没有人做过吗?
--------------------编程问答-------------------- OpenComPort 函数返回值类型为long ,而你这用int32去接收这个值可能不行吧,不知能否把long类型强制转换为int32. --------------------编程问答-------------------- 确认过vc的long,在c#中可以用int32的,主要是函数参数如何传递问题。 --------------------编程问答-------------------- 没人回应吗? --------------------编程问答-------------------- 用StringBuilder不行嘛? --------------------编程问答-------------------- StringBuilder不行 --------------------编程问答--------------------
引用楼主 sangelcn 的帖子:
dll中有这样一个函数: 
long WINAPI OpenComPort(long Port,unsigned char *ComAdr,unsigned char *FrmHandle); 

我在c#中这样申明 
[DllImport("RR9000.dll")] 
public static extern Int32 OpenComPort(Int32 port, byte[] add, byte[] frmHandle); 

程序中这样调用: 
byte[] handle=new byte[10]; 
byte[] b ={ 0xFF}; 
Int32 l = declare.OpenComPort(1, b, handle); 
但报错,提示可能类型不匹配。 

主要…


long OpenComPort(int Port,string ComAdr,ref IntPtr FrmHandle);
int p = 1;
string comAddress = "19200,n,8,1";
IntPtr hwnd = new IntPtr(0);
Int32 res = OpenComPort(p, comAddress, ref hwnd); 


具体的要多调试才知道,这几个参数要看具体意思,c,c++里,没有强类型检查,unsigned char*可能是BYTE[],也可能是int*如果是表示指针,要返回的,都要写ref。
不确定对不对,你试试。
--------------------编程问答-------------------- --------------------编程问答-------------------- 不懂,学习一下。 --------------------编程问答-------------------- StringBuilder不行吗  
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,