调用C或C++的DLL出现“方法的类型签名与 Interop 不兼容”

int _stdcall Read(char CodeNum,char* Res,int* Status,int WaitTime=500);

我写的C#调用方法是这样的:

[DllImport("PCBDll.dll")]
public static extern int Read(int CodeNum, ref byte[] Res, ref int[] Status,int WaitTime);

经过查阅C++相关资料,得出正确的写法应该是这样的:

[DllImport("PCBDll.dll")]
public static extern int Read(int CodeNum, byte[] Res, int[] Status,int WaitTime);

原因:Res本身传的就是地址,所以不用再加ref了。去掉ref后一切运行正常。看来我的想法应该是正确的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章