.NET 4.x Попытка чтения или записи в защищенную память - C#
Формулировка задачи:
Доброго времени суток!
Возникла такая проблема - при вызове функции из dll(написана на С++) в проекте C# компилятор спотыкается на функции Camac_XQ, выпадая с ошибкой "Попытка чтения или записи в защищенную память..."
Кто-ниюудь может подсказать каким образом ее можно исправить? Или вернее где я косячу, что она вылезает?
[DllImport("USB_CAM_DLL.dll")] unsafe static extern char* CamInit(); [DllImport("USB_CAM_DLL.dll")] static extern void CamClose(); [DllImport("USB_CAM_DLL.dll")] unsafe static extern int Camac_XQ(Int64 N, int A, int F, int* D, char* XQ); [DllImport("USB_CAM_DLL.dll")] unsafe static extern int Camac_R(int N, int A, int F, int* D); [DllImport("USB_CAM_DLL.dll")] static extern int Camac_W(int N, int A, int F, int D); [DllImport("USB_CAM_DLL.dll")] static extern int Camac_(int N, int A, int F); [DllImport("USB_CAM_DLL.dll")] static extern void CamZ(); [DllImport("USB_CAM_DLL.dll")] static extern void CamRemI(); [DllImport("USB_CAM_DLL.dll")] static extern void CamC(); [DllImport("USB_CAM_DLL.dll")] static extern void SequStop(); [DllImport("USB_CAM_DLL.dll")] unsafe static extern int SequLoad(char* Buf, int Length); [DllImport("USB_CAM_DLL.dll")] unsafe static extern int SequWaitAndRead(char* Buf, int Length); [DllImport("USB_CAM_DLL.dll")] static extern int SetLamTimeOut(int Time); [DllImport("USB_CAM_DLL.dll")] unsafe static extern int GetLamTimeOut(int* Time); //собственные функции для работы с CАMAC unsafe public int init_CAMAC(int station) { char* result; char XQ; int D; string nodev = "No USB Device found"; result = CamInit(); if (nodev.CompareTo(Marshal.PtrToStringAnsi((IntPtr)result))!= 0) { CamZ(); CamC(); Camac_XQ(station, 0, 2, &D, &XQ); XQ = Convert.ToChar(Convert.ToInt32(XQ) & 3); D = 0; return XQ; } else { MessageBox.Show(Marshal.PtrToStringAnsi((IntPtr)result), "InitCAMAC"); return -1; } } }
Решение задачи: «.NET 4.x Попытка чтения или записи в защищенную память»
textual
Листинг программы
[DllImport("USB_CAM_DLL.dll", CallingConvention=CallingConvention.Cdecl)] unsafe static extern int Camac_XQ(int N, int A, int F, int* D, byte* XQ);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д