Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не могу разобраться с выгрузкой Dll


Страницы:   1 2

Starkom ©   (2002-06-04 08:29:00) 

Хоть убей, не могу понять причину, по которой прога валится при FreeLibrary. Перед этим все нормально - происходит LoadLibrary, оттуда вызывается функция через GetProcAddress. А потом все падает при выгрузке.


Hate that never dies   (2002-06-04 10:28:00) [21]

>> Starkom:
>> Кстати, эта Dll сама активно использует Load(Free)Library других Dll"ек.

В блоке begin...end. выгружаемой библиотеки попробуй сделать явное Free всех библиоек, которые ты LoadLibrary в этой самой библиотеки.
Ошибка возможно происходит из-за того, что библиотека не может корректно освободить захваченные ресурсы.


MBo   (2002-06-04 10:26:00) [22]

кроме порядка передачи праметров, соглашение вызова регламентирует, кому очищать стек - вызывателю или вызываемому, так что это важно


Starkom   (2002-06-04 10:19:00) [23]

function LalaFunc (params): boolean; cdecl; - так описано в коде Dll. По-моему, если бы вызов функции был неправильный, то она работала бы неправильно (параметры бы, по идее, воспринялись бы неправильно), либо вообще бы не работала. А у меня работает правильно.


Игорь Шевченко   (2002-06-04 10:11:00) [24]

С соглашениями о вызовах у вас точно все нормально ?
Я насчет cdecl...


Starkom   (2002-06-04 10:07:00) [25]

код проги -
type
ProcType = function(params):PChar; cdecl;
...
libHnd := LoadLibrary ("lala.Dll");
proc := procType(GetProcAddress (libHnd, pchar("LalaFunc")));
proc (lalaparams); //происходит успешный вызов функции;
if not FreeLibrary(libHnd) then //валится на этой строчке
ShowMessage(GetLastError());

могут быть ошибки в синтаксисе, но смысл ясен. А код Dll физически не смогу показать - там архив исходников на 500 Кб.


Игорь Шевченко   (2002-06-04 09:42:00) [26]

Код бы посмотреть...


Starkom   (2002-06-04 09:34:00) [27]

Подскажите, хотя бы какие ресурсы используются при загрузке Dll, и как их очищать при выгрузке.


Starkom   (2002-06-04 08:36:00) [28]

Да нет, ошибка где-то в Dll, но я не могу понять где. Может кто-нибудь подскажет вероятные причины.
Кстати, эта Dll сама активно использует Load(Free)Library других Dll"ек.


MBo   (2002-06-04 08:32:00) [29]

вероятно, в программе ошибка ;)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо