C#调用C++DLL文件的疑问

.Net技术 码拜 8年前 (2016-03-08) 994次浏览
假如有个C++的dll文件,例如对外提供一个函数Sign(DWORD a,BYTE *  b),在C#中不存在DWORD类型也没有指针,那么本人在C#中该怎么样调用这个方法?
解决方案

10

C#中存在DWORD,即uint,C#中也存在指针,BYTE* b就是byte* b
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);
这种方式是可以的。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#调用C++DLL文件的疑问
喜欢 (0)
[1034331897@qq.com]
分享 (0)