Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

выгрузка dll   Найти похожие ветки 

 
Oleg_   (2005-08-02 14:38) [0]

Ситуация следующая:
Для открытия немодальной формы из dll использую асинхронную развязку т.е. гружу библиотеку, нахожу адрес и пускаю функцию, открывающую немодальную форму. Одновременно передаю указатель на функцию в основной программе, которая должна будет (после закрытия немодальной формы) через  сообщение (асинхронно) вызвать выгрузку dll.
Так вот после всей этой конструкции закрытие основного приложения вызывает ошибку access violetion. Если же выгрузку dll комментирую все ок.
В чем может быть дело?


 
Defunct ©   (2005-08-02 15:45) [1]

Oleg_   (02.08.05 14:38)  

Дело в том, что вызываете вы эту некую функцию внутри dll, ее отработка приводит к выгрузке кода dll из памяти процесса, и когда происходит возврат вы попадаете уже в область памяти, которая не принадлежит вашему процессу.

Как сделать правильно? Очень просто: передавать DLL-ке не указатель на функцию, а Handle например главной формы, и при закрытии DLL формы посылать какое-то свое сообщение (сторого с помощью PostMessage) окну с этим Handle"ом.


 
Ega23 ©   (2005-08-02 15:47) [2]

А если в общем, то я бы не стал так делать...


 
Oleg_   (2005-08-02 16:33) [3]

с указателем на функцию проблем нет по нему при дестрое модальной формы нормально вызывается сама функция уже в основной программе и шлет сообщение главному окну основной программы. Получив это сообщение выгружается dll. проблема возникает затем при закрытии главного окна основной программы, если dll была выгружена.


 
Ega23 ©   (2005-08-02 16:47) [4]

Значит где-то у кого-то остались какие-то ссылки на dll. Чудес-то не бывает.


 
Oleg_   (2005-08-02 17:43) [5]

Там всего то ссылок 5 штук, все об nil-ил. А чудес действительно не бывает, согласен.


 
Ega23 ©   (2005-08-02 17:56) [6]

Или в длл остались ссылки на Application


 
Oleg_   (2005-08-02 19:00) [7]

В dll application.handle не приравнивался основному application.handle  , на панели задач при этом видны две разные задачи. В dll используется только свой application


 
Гаврила ©   (2005-08-02 19:47) [8]

Приведи код. Ошибка, видимо, в другом месте



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.066 c
4-1119592168
NikNet
2005-06-24 09:49
2005.08.21
Как старшее и младшое слово сделать DWORD? на DELPHI.


3-1121251256
-=snoop=-
2005-07-13 14:40
2005.08.21
глюк с DBCheckBox


4-1119940523
happyandry
2005-06-28 10:35
2005.08.21
Помогите с иконкой и ее обработкой


14-1122444403
zamik
2005-07-27 10:06
2005.08.21
Настройка SHDSL модемов


1-1122904145
BFG9k
2005-08-01 17:49
2005.08.21
Перемещение компонента по форме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский