Форум — Ответы ( К темам )
? | Fantom: Не могу понять... (TList из ДЛЛ) (20-05-2003 12:30:45) |
Очередная лажа при работе с чужой ДЛЛ(кто помнит — с все тойже Делфевой). Вызываю ф-ию из ДЛЛ-ки: typedef int (__stdcall *FunK1)(unsigned char, unsigned сhar, TList*&, TList*&, TList*&, HWND); Родное описание ее на Делфи выглядит: FunK1 = Function (t,k:byte; var _K1,_K2,_K3:TList; Handd:HWND):integer;stdcall; Загружаю ДЛЛ-ку. Вываю ф-ию, получаю определенные значения в TList-ах (все ОК). Выгружаю ДЛЛ-ку. А дальше лажа: 1) после выгрузки ДЛЛ-ки TList-ы недоступны (такое впечатление, что данные были в адресном пространстве ДЛЛ-ки и пох_ерились вместе с выгрузкой ее из памяти). Проблемму решил за счет перепресвоения значений в другие три TList-а. Хотя сам подобные задачи уже писал, с точно такой же схемой и данные были доступны. 2) самое галимое, что по выходу из ф-ии в кот. вся эта обработка происходила — выдается матюк(ексес виолейшн), затыкается на строке: 0057B418 8B4AF8 mov ecx, [edx-0x08]. Кто понимает в чем я не прав, в чем мои ошибки подскажите плиз! Зараннее благодарен за помощь! | |
Павел (20-05-2003 14:37:14) | |
Так а зачаем вам после вызова функции выгружать dll ? (то загружать, то выгружать) Загружайте ее один раз при старте программы, а выгружайте при завершении, например в деструкторе главной формы. | |
Fantom (20-05-2003 15:19:28) | |
Суть не в том когда выгружать ДЛЛ, хотя какой смысл мне ее грузить в начале, а потом по выходу из программы выгружать если я могу и не воспользоваться при работе этой ф-ией, что особо и не меняет дела. Проблемма в пункте №2(см.выше).
|