Подключние dll
От: solution  
Дата: 11.10.07 09:01
Оценка:
Здравствуйте.
В библиотеке на с++ имеется следующая функция
  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="Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Подскажите пожалуйста что я делаю не так.
Re: Подключние dll
От: ZARATUSTR Россия  
Дата: 11.10.07 09:08
Оценка:
Попробуй:

[DllImport(sGisAcces, CharSet = CharSet.Ansi)]

public static extern void mapPaint95(int HMap, IntPtr dc, int erese, ref RECT rect);

толкько стркутура должна быть помечена аттрибутом StructLayout

а _MAPAPI это что за тип?
Re[2]: Подключние dll
От: solution  
Дата: 11.10.07 10:15
Оценка:
Здравствуйте, ZARATUSTR, Вы писали:

ZAR>Попробуй:


ZAR>[DllImport(sGisAcces, CharSet = CharSet.Ansi)]

ZAR>public static extern void mapPaint95(int HMap, IntPtr dc, int erese, ref RECT rect);

ZAR>толкько стркутура должна быть помечена аттрибутом StructLayout


Спасибо большое.Помогло.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.