в моем коде C # я хочу импортировать C ++ DLL. Я использую dllimport, и он отлично работает с некоторыми функциями. Но в одной функции я получаю РУЧКУ, которая понадобится мне позже для вызова другой функции.
[DllImport("SiUSBXp.dll")]
public static extern int SI_Open(UInt32 deviceNum,ref IntPtr devHandle ); // this function gets the HANDLE
[DllImport("SiUSBXp.dll")]
public static extern int SI_Write([In]IntPtr devHandle, [In, Out] byte[] inputByte, UInt32 size,ref UInt32 bytesWritten); // this function needs the HANDLE
В моем коде эти функции называются так:
IntPtr devHandle = new IntPtr();
UInt32 bytesWritten = new UInt32();
byte[] byteArr = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
SI_Open(0, ref devHandle);
SI_Write(devHandle, byteArr, 10, ref bytesWritten);
Если я делаю так, я получаю «System.AccessViolationException». Я искал здесь и в Интернете, но не нашел конкретного ответа. Как правильно использовать IntPtr, чтобы он работал?
С наилучшими пожеланиями
Toby