假如有个C++的dll文件,例如对外提供一个函数Sign(DWORD a,BYTE * b),在C#中不存在DWORD类型也没有指针,那么本人在C#中该怎么样调用这个方法?
解决方案
10
C#中存在DWORD,即uint,C#中也存在指针,BYTE* b就是byte* b
C++中类型非常多,遇到不知道的你看下定义即可
纯从语法上来说C#是最接近C的语言,很多情况下,C写的一个东西直接复制到C#中,稍微改一点就可以用了
C++中类型非常多,遇到不知道的你看下定义即可
纯从语法上来说C#是最接近C的语言,很多情况下,C写的一个东西直接复制到C#中,稍微改一点就可以用了
10
c++也没dword类型,都是typedef过来的
10
DWORD是4个字节的无符号整数,因此C#中用uint就可以。其实C#中是有指针的,只是语法上不建议使用,毕竟是面向对象语言。但是假如要使用的话,可以用ref关键字。C++中的BYTE * b指针可以在C#中声明为ref byte b,在调用的是用ref b[0],也就是将第一个元素的首地址传入。
10
用[DllImport(“mi.dll”, EntryPoint = “API_OpenComm”)]
public static extern IntPtr API_OpenComm(int nCom, int nBaudrate);
这种方式是可以的。
public static extern IntPtr API_OpenComm(int nCom, int nBaudrate);
这种方式是可以的。