Russian Qt Forum

Qt => Общие вопросы => Тема начата: QCasper от Февраль 13, 2007, 17:09



Название: Деструктор плагина.
Отправлено: QCasper от Февраль 13, 2007, 17:09
Почему при выгрузке билиотеки плагина, не вызывается деструктор класса? Если это нормально, просто я чего-то не понимаю, то как по-другому произвести деструктивные действия внутри класса плагина во время выгрузки библиотеки?


Название: Деструктор плагина.
Отправлено: Lion от Февраль 13, 2007, 22:13
Как выгружаешь библиотеку? Чтобы деструктор вызывался при удалении QPluginLoader надо сделать так:
Код:
plugin->instance()->setParent(loader)


Название: Деструктор плагина.
Отправлено: QCasper от Февраль 14, 2007, 00:45
Цитата: "Lion"
Как выгружаешь библиотеку? Чтобы деструктор вызывался при удалении QPluginLoader надо сделать так:
Код:
plugin->instance()->setParent(loader)


Стоп, при чем здесь удаление QPluginLoader'a? Мне нужно чтобы деструктор класса плагина вызвался вот в этот момент:

Код:
loader.unload();


При этом нигде не сказано, что лоадер тоже щас удалят.


Название: Деструктор плагина.
Отправлено: Lion от Февраль 14, 2007, 20:18
Попробуй ручной вызов plugin->instance()->~Qobject();


Название: Деструктор плагина.
Отправлено: Dendy от Февраль 15, 2007, 12:00
Недочитали:

Код:
QPluginLoader::~QPluginLoader ()

Destroys the QPluginLoader object.
Unless unload() was called explicitly, the plugin stays in memory until the application terminates.


Название: Деструктор плагина.
Отправлено: QCasper от Февраль 15, 2007, 12:23
Цитата: "Dendy"
Недочитали:

Код:
QPluginLoader::~QPluginLoader ()

Destroys the QPluginLoader object.
Unless unload() was called explicitly, the plugin stays in memory until the application terminates.


Так я же говорю: я явно вызываю unload, у меня даже студия в аутпуте пишет, что такая-то библиотека выгрузилась, но на брэйкпойнте, который я ставлю в деструкторе плагина, программа так и не застревает...