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后一切运行正常。看来我的想法应该是正确的。