Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ginger_Ministrel от Июнь 19, 2014, 14:13



Название: Подключение библиотек в Qt5
Отправлено: Ginger_Ministrel от Июнь 19, 2014, 14:13
Возможно, вопрос очень ламерский, но до внезапного не смог решить.

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

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


Название: Re: Подключение библиотек в Qt5
Отправлено: xokc от Июнь 19, 2014, 18:58
Что тут всё каша какая-то. Судя по CONFIG += plugin это у тебя плагин. Подключать его нужно через QPluginLoader. Плагин от Qt4 с Qt5 работать не будет.


Название: Re: Подключение библиотек в Qt5
Отправлено: Ginger_Ministrel от Июнь 20, 2014, 10:05
Хмм... понял. То есть, надо его пересобрать в Qt5 и подключить через QPluginLoader.
Сейчас попробую.


Название: Re: Подключение библиотек в Qt5
Отправлено: Ginger_Ministrel от Июнь 20, 2014, 11:42
О, там все вообще интересно! В проект-файле указан конфиг плагина, но при этом нету ни Q_EXPORT_PUGIN2, ни интерфейса в главном объекте плагина.
Похоже, придется написать свой интерфейс.

Спасибо!


Название: Re: Подключение библиотек в Qt5
Отправлено: lesav от Июнь 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" ]
}


Название: Re: Подключение библиотек в Qt5
Отправлено: Fregloin от Июль 07, 2014, 18:12
кстати файл json указывать не обязательно.