Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Lion от Октябрь 08, 2008, 17:59



Название: Не подгружается плагин в Linux
Отправлено: Lion от Октябрь 08, 2008, 17:59
Не получается подгрузить плагин, который использует другую динамически подключаемую библиотеку в Linux, в Windows проблем нет.
Прикрепил тестовый проектик, после компиляции копирую файл libplugin.so в папку plugins, и файлы libutils.so* в папку где loader, поле запуска выдается сообщение WRONG LIBRARY BUILD CONTEXT, т.е. QPluginLoader::load() возвращает false. Что я делаю не так?


Название: Re: Не подгружается плагин в Linux
Отправлено: Admin от Октябрь 08, 2008, 20:25
у меня выдало
eugene% eugene% ./loader
PLUGIN LOADED "/home/eugene/tmp/666/PluginTest/plugins/libplugin.so"

как я понял все гуд


Название: Re: Не подгружается плагин в Linux
Отправлено: Rcus от Октябрь 08, 2008, 20:32
Скорее всего дело в различии между механизмами разрешения имен динамических библиотек: в Windows первым делом проверяется текущий каталог, затем системные папки, и указанные в переменной %PATH%, под Linux по умолчанию проверки текущего каталога нет, но можно включить командой
Код:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
. Другой путь, это загрузка зависимостей через QLibrary::load.
И пара цитат из assistant:
Цитировать
QPluginLoader::~QPluginLoader ()
Destroys the QPluginLoader object.
Unless unload() was called explicitly, the plugin stays in memory until the application terminates.
Так что QPluginLoader можно спокойно создавать на стеке.
Цитировать
QString QPluginLoader::errorString () const
Returns a text string with the description of the last error that occurred.
Поможет проще диагностировать проблемы с загрузкой плагинов.


Название: Re: Не подгружается плагин в Linux
Отправлено: Lion от Октябрь 09, 2008, 18:05
Помогло - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./


Название: Re: Не подгружается плагин в Linux
Отправлено: lit-uriy от Октябрь 09, 2008, 21:36
2 Lion, это тебе на локальной машине помогло, а у пользователя не поможет. т.к. он врятли будет такими настройками заниматься.
Надо как Rcus, говорил в переменную окружения PATH путь прописывать или QLibrary::load.


Название: Re: Не подгружается плагин в Linux
Отправлено: Lion от Октябрь 09, 2008, 21:58
Я несовсем понял про QLibrary::load(), мне будет достаточно просто загрузить библиотеку или придется пользоваться функциями через QLibrary::resolve()?


Название: Re: Не подгружается плагин в Linux
Отправлено: ритт от Октябрь 09, 2008, 23:05
2lit-uriy, а при чём тут переменная окружения PATH ?