Russian Qt Forum
Ноябрь 05, 2024, 22:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не подгружается плагин в Linux  (Прочитано 5503 раз)
Lion
Гость
« : Октябрь 08, 2008, 17:59 »

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

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Октябрь 08, 2008, 20:25 »

у меня выдало
eugene% eugene% ./loader
PLUGIN LOADED "/home/eugene/tmp/666/PluginTest/plugins/libplugin.so"

как я понял все гуд
Записан
Rcus
Гость
« Ответ #2 : Октябрь 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.
Поможет проще диагностировать проблемы с загрузкой плагинов.
Записан
Lion
Гость
« Ответ #3 : Октябрь 09, 2008, 18:05 »

Помогло - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Октябрь 09, 2008, 21:36 »

2 Lion, это тебе на локальной машине помогло, а у пользователя не поможет. т.к. он врятли будет такими настройками заниматься.
Надо как Rcus, говорил в переменную окружения PATH путь прописывать или QLibrary::load.
Записан

Юра.
Lion
Гость
« Ответ #5 : Октябрь 09, 2008, 21:58 »

Я несовсем понял про QLibrary::load(), мне будет достаточно просто загрузить библиотеку или придется пользоваться функциями через QLibrary::resolve()?
Записан
ритт
Гость
« Ответ #6 : Октябрь 09, 2008, 23:05 »

2lit-uriy, а при чём тут переменная окружения PATH ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.162 секунд. Запросов: 23.