首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载Qt插件

无法加载Qt插件
EN

Stack Overflow用户
提问于 2014-10-11 15:13:55
回答 2查看 1.8K关注 0票数 2

我使用Qt 5.3,在调用

代码语言:javascript
复制
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
bool pluginLoaded = pluginLoader.isLoaded();

它给出了false :(

// serverplugin.h

代码语言:javascript
复制
    #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

代码语言:javascript
复制
#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项目这么做的。调试时,它工作得很好。在开发过程中,我对插件部分进行了更改。

EN

回答 2

Stack Overflow用户

发布于 2014-10-11 17:39:27

QPluginLoader进行以下检查:

  • 相同的构建配置(发布/调试,类Unix系统除外)
  • 相同的主要版本和次要/补丁程序版本等于或小于Qt

的应用程序次要/补丁程序版本

在开发时,有时会忘记使用正确的Qt配置重新构建插件,从而导致插件无法加载。解决方案:使用正确的构建配置重建插件。

您还可以在应用程序的启动环境中设置QT_DEBUG_PLUGINS=1,以获取更详细的插件加载调试信息。

票数 3
EN

Stack Overflow用户

发布于 2016-03-17 01:04:13

我昨天偶然发现了这个问题,下面是我解决这个问题的方法:请注意,我的插件和使用该插件的应用程序都处于调试模式,并且使用相同版本的Qt构建,所以这不是问题所在。问题是我忘记在插件的主导出类中放入下面这一行:

代码语言:javascript
复制
Q_PLUGIN_METADATA(IID "namespace.if.any.classname" FILE "package.json")

在此之后,我没有问题加载插件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26312100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档