Название: [РЕШЕНО] Многоуровневая система плагинов Отправлено: kai666_73 от Декабрь 21, 2012, 12:01 Ситуация такая - основная программа загружает плагины стандартными кутешными средствами, а плагины, в свою очередь, грузят свои (под)плагины.
Проблема в том, что такая связка вполне себе работает под Windows, а в Linux плагины плагинов не загружаются. Догадываюсь, что связано это с системными особенностями загрузки библиотек... Хотелось бы реализовать возможность использования такой конструкции, так сказать, кроссплатформенно. Есть ли у кого какие-нибудь соображения по данной проблеме? решено: добавлением в LDPATH папки в которой лежат плагины (в моем случае <app_dir>/plugins) Название: Re: Многоуровневая система плагинов Отправлено: Dancing_on_water от Декабрь 21, 2012, 12:20 Как грузятся плагины в плагинах? через QPluginLoader? Если да, то проверьте а существует ли подгружаемые вами файлы по тому пути, что вы указали.
Название: Re: Многоуровневая система плагинов Отправлено: kai666_73 от Декабрь 21, 2012, 14:10 Как грузятся плагины в плагинах? через QPluginLoader? Если да, то проверьте а существует ли подгружаемые вами файлы по тому пути, что вы указали. - да через QPluginLoader - все подгружаемые файлы на месте, проверил qDebug-м, что передается лоадеру и наличие соотв. файла и повторюсь - в Windows все работает, в Linux Код: QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); Почему так происходит, догадываюсь/уверен процентов на 95. Либа плагина загружается приложением два раза, первый раз при загрузке самого плагина, второй раз при загрузке подплагина по зависимостям. Винь такое безобразие спокойно разруливает, а Линь отказывается загружать подплагин. Собственно вопрос не почему происходит такое безобразие,.. а есть ли у кого какие-нибудь идеологические соображения как реализовать многоуровневую систему плагинов, которая будет работать и под Linux Название: Re: Многоуровневая система плагинов Отправлено: Dancing_on_water от Декабрь 21, 2012, 14:27 Цитировать и повторюсь - в Windows все работает, в Linux По опыту: это значит где-то в голове что-то с чем-то неправильно сложилось. :)Давайте не будем спешить и напишем Код: loader.load() Название: Re: Многоуровневая система плагинов Отправлено: xokc от Декабрь 21, 2012, 14:31 А отладчиком внутрь loader.instance() ходил? В каком именно месте с return 0 вылетает?
Название: Re: Многоуровневая система плагинов Отправлено: kai666_73 от Декабрь 21, 2012, 14:40 А отладчиком внутрь loader.instance() ходил? В каком именно месте с return 0 вылетает? На Linux (Calculate) нет дебажной сборки Qt (( Пока попробую c LoadHint поиграться и посмотрю сообщение об ошибке лоадера (errorString () ) Название: Re: Многоуровневая система плагинов Отправлено: kai666_73 от Декабрь 21, 2012, 14:43 Dancing_on_water
А разве Код: loader.insatance() Название: Re: Многоуровневая система плагинов Отправлено: Dancing_on_water от Декабрь 21, 2012, 14:46 Выполняет, но уж если столкнулись с проблемой, то лучше делать все по шагам.
Название: Re: Многоуровневая система плагинов Отправлено: xokc от Декабрь 22, 2012, 21:57 На Linux (Calculate) нет дебажной сборки Qt (( Собрать самому? |