У меня есть функция на C ++ и экспортируется в DLL.функция
LONG LOGIN(LPDEVINFO info);
структура LPDEVINFO
:
struct{
BYTE sSerialNumber[20];
} *LPDEVINFO;
для передачи LPDEVINFO
параметра, в управляемом коде определен класс:
class DEVINFO{
Byte[] sSerialNumber = new Byte[20];
}
и затем P / Invoke следующим образом:
[DllImport ('MyDll.dll')]
public static extern Int32 LOGIN(DEVINFO info);
, а затем вызвать его на C #:
DEVINFO info = new DEVINFO();
Int id = LOGIN(info)
Когда я запускаю этот код, я получаю следующую ошибку:
An unhandled exception of type 'System.AccessViolationException' occurred in WindowsFormsApplication1.exe
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Я думаю, что проблема вызвана массивом sSerialNumber
.Но я не знаю, как правильно его определить.
Заранее спасибо!