从c#处的DLL调用参数传递中获取错误



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);

试图读取或写入受保护的内存。这通常表示其他内存已损坏

试试这个:

[DllImport("mflib.dll")]
public static extern int mfScan(int mode, int font, int timeout, StringBuilder ret_codeline, out int ret_maxchars);

除了out int ret_maxchars之外,请注意StringBuilder而不是字符串。然后确保调用约定是正确的。

应为out int ret_maxchars

您还应该考虑将CharSet添加到DllImport中。

最新更新