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

时间:2012-01-13 15:11:49

标签: c# .net winforms pinvoke

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

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

2 个答案:

答案 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而不是字符串。 然后确保调用约定正确。