DLLENTRY int CCON mfScan (int, int, int, char *, int *);
[DllImport("mflib.dll")]
public static extern int mfScan(int mode, int font, int timeout, string ret_codeline, int ret_maxchars);
我使用此代码得到以下错误。它指向测试。我该怎么办?
string test = string.Empty;
int retval = mfScan(32, 2, 5000, test, 100);
尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
答案 0 :(得分:3)
应为out int ret_maxchars
。
您还应考虑将CharSet
添加到DllImport
。
答案 1 :(得分:3)
试试这个:
[DllImport("mflib.dll")]
public static extern int mfScan(int mode, int font, int timeout, StringBuilder ret_codeline, out int ret_maxchars);
除了StringBuilder
之外,请注意out int ret_maxchars
而不是字符串。
然后确保调用约定正确。