日期:2014-05-17  浏览次数:20992 次

c# 调用C++的DLL函数报错
C++的原函数是
unsigned char __stdcall RC500USB_select(unsigned long snr,unsigned char &size);
VB调用DLL文件不会出现问题
Declare Function RC500USB_select Lib "RC500USB.dll" (ByVal snr As Long, ByRef size As Byte) As Byte
用C#我是这么调用的
public static extern byte RC500USB_select(ulong snr, ref byte size);
运行的时候报错尝试读取或写入受保护的内存。这通常指示其他内存已损坏。不知道怎么回事 是不是我数据格式转换错误了。
C++ C#

------解决方案--------------------
c#中ulong是64位无符号整数,而c++中,unsigned long是32位的,vb中的Long也是32位的。
所以c#中对应的要用uint或者UInt32