Доброго времени суток!
Столкнулся с неожиданной проблемой при попытке создать плагин.
Сперва попробовал сделать это по образу и подобию Qt4. Создал два класса ProvederPlugin - сам плагин и ProviderItem - пустой класс унаследованный от QObject.
Код:
provideritem.h
#ifndef PROVIDERPLUGIN_H
#define PROVIDERPLUGIN_H
#include <QObject>
#include <QtQuick>
#include <QQmlExtensionPlugin>
class ProvederPlugin : public QQmlExtensionPlugin
{
Q_OBJECT
// Q_PLUGIN_METADATA("ProviderItem" )
public:
void registerTypes(const char *uri);
};
#endif // PROVIDERPLUGIN_H
#include "providerplugin.h"
#include "provideritem.h"
void ProvederPlugin::registerTypes(const char *uri){
qmlRegisterType<ProviderItem>(uri, 1, 0, "ProviderItem");
}
.pro
TEMPLATE = lib
CONFIG += qt plugin
QT += qml quick
DESTDIR = ../qml
TARGET = provider_plugin
HEADERS += \
provideritem.h \
providerplugin.h
SOURCES += \
provideritem.cpp \
providerplugin.cpp
В каталоге qml создан qmldir:
module MyModule
MainView 1.0 mainview.qml
plugin provider_plugin .
При запуске вижу:
file:///home/<путь к файлу>/qml/qmldir: plugin cannot be loaded for module "qml": Plugin verification data mismatch in '/home/<путь к файлу>/qml/libprovider_plugin.so'
Если раскомментировать Q_PLUGIN_METADATA - мок выкинет ошибку. Что это за макрос мне не ясно, также как и что такое IID плагина. Ощущение такое будто я что-то пропустил и не могу найти нужную информацию.
Потом я попробовал запустить пример QML Plugin Example на который есть ссылка в справке. Собрал. При запуске увидел:
qmlscene -I imports plugins.qml
file:///home/<путь к файлу>/qml/qmlextensionplugins/plugins.qml:41 plugin cannot be loaded for module "TimeExample": The plugin '/home/<путь к файлу>/qml/qmlextensionplugins/imports/TimeExample/libqmlqtimeexampleplugin.so' uses incompatible Qt library. (5.2.1) [release]
и
qmlscene -I imports plugins.qml
file:///home/<путь к файлу>/qml/qmlextensionplugins/plugins.qml:41 plugin cannot be loaded for module "TimeExample": The plugin '/home/<путь к файлу>/qml/qmlextensionplugins/imports/TimeExample/libqmlqtimeexampleplugin.so' uses incompatible Qt library. (5.2.1) [debug]
в зависимости от параметра сборки.
В общем, коллеги, помогите разобраться, как создать свой плагин.