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. А потом все падает при выгрузке.


Starkom   (2002-06-05 21:45:00) [1]

все оказалось намного проще - приложение компилялось без дурацкой галочки build with run-time packages, а DLL с ней. :)


Игорь Шевченко   (2002-06-04 13:30:00) [2]

А чей Application используется в качестве Owner"а компонент ?
Application из DLL или Application из EXE ?


oomneeq   (2002-06-04 12:54:00) [3]

>Starkom (04.06.02 11:13) ...
>... да при создании компонентов в качестве овнера суется Application

А чей это Application? DLLcкий или главноприложенческий?
Cтоит проверить, не уничтожаешь ли ты к примеру явно такие компоненты в неподходящий момент.
Неподходящим моментом может быть когда Application находится в состоянии csDestroying - он тогда полуживой.
А эта полуживость может быть чревата например тем, что такой Application Exception"ы нормально уже не ловит.
Короче копай в ту сторону, раз уж не приводишь исходник.


Starkom   (2002-06-04 12:11:00) [4]

хмм, finalization секция только одна и в ней ничего страшного нет. в стандартных модулей слишком много.


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

Если со стеком все нормально, то можно посмотреть, что происходит в finalization секциях unit"ов, используемых в DLL. Как своих, так и стандартных.
А вообще, без кода беременность на расстоянии диагностировать крайне затруднительно :-)


Starkom   (2002-06-04 11:27:00) [6]

Нет, со стеком все нормально.


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

ESP - это указатель стека. Регистр такой. View/CPU Window до вызова функции из DLL и после


Starkom   (2002-06-04 11:13:00) [8]

2 oomneeq: нет, вроде. В некоторых местах вызывается Application.ProcessMessages, да при создании компонентов в качестве овнера суется Application


Starkom   (2002-06-04 11:07:00) [9]

2 Григорий: хмм, SysUtils используется почти везде и без него будет очень тяжко. А с ним бывают проблемы?


oomneeq   (2002-06-04 11:03:00) [10]

>сама ошибка - raised too many consecutive exceptions: access violation at 0x00: read of address 0x00
Application переприсваиваешь?


Григорий Ситнин   (2002-06-04 10:58:00) [11]

2 Starkom: А в ваших DLL, случайно, не используется модуль SysUtils? Попробуйте его выключить из uses. Возможно, проблема исчезнет.


Starkom   (2002-06-04 10:54:00) [12]

2 Игорь: А что в этом, ESP хранится?


Starkom   (2002-06-04 10:51:00) [13]

сама ошибка - raised too many consecutive exceptions: access violation at 0x00: read of address 0x00


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

А в отладчике посмотреть ESP до вызова функции из DLL и после ?


Starkom   (2002-06-04 10:39:00) [15]

да, ShareMem и там, и там.


Starkom   (2002-06-04 10:37:00) [16]

хмм, а что такое ProcessDetach, в хелпах такого нет.


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

ShareMem используется в DLL и в EXE ?


MBo   (2002-06-04 10:30:00) [18]

явно - не надо, лишь бы совпадало соглашение


Hate that never dies   (2002-06-04 10:30:00) [19]

SORRY/
Конечно не в самом begin...end, а в ProccessDettach


Starkom   (2002-06-04 10:28:00) [20]

хмм, и как явно очищать стек?


Страницы:   1 2

Наверх

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