|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Exception при FreeLibrary
Всем привет!
Третий день бьюсь не могу решить проблему! Имеется dll в ней создаётся TIBDataBase. Из вызывающего приложения передают туда Handle. Всё моя dll'ка отрабатывает и при FreeLibrary выскакивает Exception. Что интересно ошибка обращения к памяти по адресу 0x0000000000. Может у кого есть какие мысли. Я всё вроде испробовал. --------------------------------------------- Программирование - не профессия, а стиль жизни |
#2
|
||||
|
||||
У меня очень похожая ситуация. В dll есть процедура и функция. С процедурой все нормально, а с функцией не очень: как раз во время FreeLibrary появляется Exception. Как тебе помочь не знаю, сам не исправил.
|
#3
|
|||
|
|||
И у меня то же самое, как быть не знаю..
|
#4
|
|||
|
|||
а вот и ответ (борланд подсказал ):
{ Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } |
#5
|
||||
|
||||
Если я понял, то в код проекта нужно добавить модуль ShareMem. Так? Или я не правильно понял?
|
#6
|
||||
|
||||
Да, в код DLL, причем самым первым. Но это очень косо - вместе с DLL придется поставлять BORLNDMM.DLL.
Для того, чтобы избежать этого, юзайте в качестве строковых параметров (для передачи строки) не String, а PChar или ShortString. THE CRACKER IS OUT THERE |
#7
|
||||
|
||||
Цитата:
--------------------------------------------- Программирование - не профессия, а стиль жизни |