Здравствуйте.
В библиотеке на с++ имеется следующая функция
void _MAPAPI mapPaint95(HMAP hMap,HDC hDC,
long int erase, RECT * rect);
где HMAP — long int
HDC — контекст устройства,
В своем приложении объявляю ее следующим образом
[DllImport(sGisAcces, CharSet = CharSet.Ansi)]
public static extern void mapPaint95(int HMap, IntPtr dc, int erese, RECT rect);
Далее вызываю в коде
MapAccess.RECT Rect = new MapAccess.RECT();
Rect.left = 20;
Rect.top = 100;
Rect.right = 500;
Rect.bottom = 400;
MapAccess.mapPaint95(IndexMap, dc, 0, Rect);
В результате получаю исключение
System.AccessViolationException was unhandled
Message="Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Подскажите пожалуйста что я делаю не так.
Попробуй:
[DllImport(sGisAcces, CharSet = CharSet.Ansi)]
public static extern void mapPaint95(int HMap, IntPtr dc, int erese, ref RECT rect);
толкько стркутура должна быть помечена аттрибутом StructLayout
а _MAPAPI это что за тип?