調用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後一切運行正常。看來我的想法應該是正確的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章