【发布时间】:2014-10-11 07:13:55
【问题描述】:
我使用 Qt 5.3 和调用时
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
bool pluginLoaded = pluginLoader.isLoaded();
它给出了错误:(
// serverplugin.h
#ifndef SERVERPLUGIN_H
#define SERVERPLUGIN_H
#include <QObject>
#include <QtPlugin>
#include "acepos/aceclient/serverinterface.h"
#include <QThread>
#include "server.h"
class ServerPlugin : public QObject,
public ServerInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.AcePos.ServerInterface/1.1" FILE "serverplugin.json")
Q_INTERFACES(ServerInterface)
QThread *m_pServerThread;
Server *m_pServer;
public:
ServerPlugin():m_pServerThread(NULL), m_pServer(NULL){}
private slots:
//void handleServiceStartNotify();
public:
bool startServerService();
bool stopServerService();
};
#endif
// serverinterface.h
#ifndef SERVERINTERFACE_H
#define SERVERINTERFACE_H
#include <QtPlugin>
class ServerInterface
{
public:
virtual ~ServerInterface() { }
virtual bool startServerService() = 0;
virtual bool stopServerService() = 0;
};
#define ServerInterface_iid "org.qt-project.Qt.AcePos.ServerInterface/1.1"
Q_DECLARE_INTERFACE(ServerInterface, ServerInterface_iid)
#endif // SERVERINTERFACE_H
如果我在创建插件时做错了什么,请告诉我。
当我构建插件项目时,我可以看到生成的库文件。我正在为 android qt 项目做这个。调试时它工作正常。我在开发过程中对插件部分进行了更改。
【问题讨论】:
-
errorString() 说什么?
-
errorString 说:“插件验证数据不匹配”
-
在 windows 机器上即使 pluginloader 说假,我也能得到插件实例 QObject *plugin = pluginLoader.instance(); if (plugin) { qDebug()(plugin); if (NULL != m_pServerInterface) { qDebug()
-
您确定在发布模式下您正在加载插件的发布版本吗? QPluginLoader 不会在发布模式下加载调试插件,反之亦然
-
抱歉这个错误是在尝试加载.a文件但尝试加载.dll时出现
void MainFrame::loadPlugin() fileName "serverplugind.dll" void MainFrame::loadPlugin() pluginLoaded false void MainFrame::loadPlugin() pluginLoaded "Unknown error"
标签: qt qt-necessitas