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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение библиотек в Qt5  (Прочитано 4673 раз)
Ginger_Ministrel
Гость
« : Июнь 19, 2014, 14:13 »

Возможно, вопрос очень ламерский, но до внезапного не смог решить.

Суть такова: есть проект, написанный не мной, в про-файле которого есть строчка "CONFIG += plugin". Он собирается в библиотеку с расширением ".so". Мне нужно приделать его к своему проекту, чтобы использовать часть функций оттуда. Добавляю с помощью функции добавления библиотеки из 3-го Криэйтора. В итоге при попытке создать класс наследник от класса, описанного там, выпадет ошибка невозможности найти.

С чем это может быть связано? Добавлять либу ручками пытался, результат тот же. Писалась она под Qt4, я сижу на Qt5 - может ли это повлиять?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #1 : Июнь 19, 2014, 18:58 »

Что тут всё каша какая-то. Судя по CONFIG += plugin это у тебя плагин. Подключать его нужно через QPluginLoader. Плагин от Qt4 с Qt5 работать не будет.
Записан
Ginger_Ministrel
Гость
« Ответ #2 : Июнь 20, 2014, 10:05 »

Хмм... понял. То есть, надо его пересобрать в Qt5 и подключить через QPluginLoader.
Сейчас попробую.
Записан
Ginger_Ministrel
Гость
« Ответ #3 : Июнь 20, 2014, 11:42 »

О, там все вообще интересно! В проект-файле указан конфиг плагина, но при этом нету ни Q_EXPORT_PUGIN2, ни интерфейса в главном объекте плагина.
Похоже, придется написать свой интерфейс.

Спасибо!
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #4 : Июнь 20, 2014, 14:37 »

Похоже, придется написать свой интерфейс.
не придется.  Нужно воспользоваться плагиной системой Qt5
Код:
//============================================ in header
class QClassPlugin: public QPublicClass
{
   Q_OBJECT
    // if Qt5     NEW PLUGIN SYSTEM
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
    Q_PLUGIN_METADATA(IID "your_plugin_id" FILE "class_plugin.json")
#endif
public:
    QClassPlugin();
    .........
};
//============================================ in CPP

// if Qt4     OLD PLUGIN SYSTEM
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
    Q_EXPORT_PLUGIN2(your_plugin_id, QClassPlugin)
#endif

class_plugin.json
Код:
{
    "Keys": [ "your_plugin_id" ]
}
Записан

Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Июль 07, 2014, 18:12 »

кстати файл json указывать не обязательно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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