Получить ошибку из DLL, вызвать параметр передачи на C # - PullRequest
0 голосов
/ 13 января 2012

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 ]

3 голосов
/ 13 января 2012

Попробуйте это:

[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.Затем убедитесь, что соглашение о вызовах правильное.

3 голосов
/ 13 января 2012

Должно быть out int ret_maxchars.

Вы также должны рассмотреть возможность добавления CharSet к DllImport.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...