Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;插件验证数据不匹配“;为qt5项目加载插件时_C++_Qt_Plugins_Qt5 - Fatal编程技术网

C++ &引用;插件验证数据不匹配“;为qt5项目加载插件时

C++ &引用;插件验证数据不匹配“;为qt5项目加载插件时,c++,qt,plugins,qt5,C++,Qt,Plugins,Qt5,我有两个简单插件的原始(没有QtDesigner)Qt5项目,其中一个没有加载简洁的错误:“插件验证数据不匹配” 第一个插件的标题(加载和运行良好): 第二个,不加载: #ifndef __PIROGRONIAN__P2P2__CHAT_PLUGIN__H__ #define __PIROGRONIAN__P2P2__CHAT_PLUGIN__H__ #include <QtNetwork/QtNetwork> #include "Chat.h" #include "PluginI

我有两个简单插件的原始(没有QtDesigner)Qt5项目,其中一个没有加载简洁的错误:“插件验证数据不匹配”

第一个插件的标题(加载和运行良好):

第二个,不加载:

#ifndef __PIROGRONIAN__P2P2__CHAT_PLUGIN__H__
#define __PIROGRONIAN__P2P2__CHAT_PLUGIN__H__

#include <QtNetwork/QtNetwork>
#include "Chat.h"
#include "PluginInterface.h"

namespace P2P2 {

    class ChatPlugin : public QObject, public PluginInterface {
        Q_OBJECT
        Q_PLUGIN_METADATA(IID "Pirogronian.P2P2.ChatPlugin")
        Q_INTERFACES(P2P2::PluginInterface)

        CoreServer *_server;
        QHash<Channel *, Chat *> _chats;

    public:
        virtual bool init(CoreServer *);
        virtual bool receiveObject(Object *);
        virtual int channelType();
    };

};

//Q_DECLARE_METATYPE(QPointer<P2P2::ChatPlugin>)

#endif
我不是专家,为qt5编写插件的描述非常粗略。但由于我找不到这些插件之间的任何主要区别,这个问题对我来说变得相当神秘。可能是Qt中的一个错误?我已经重建了好几次,以确保两者都是最新的


我正试图把整个代码放到网络的某个地方,但这需要一段时间。。。编辑:完成-此处打包为zip:

不确定是否有帮助,但您的插件似乎包含无效元数据。下面是设置错误消息的代码

您可以使用Qt的调试版本,并在该函数中设置断点。这将为您提供加载插件时发生故障的确切线路


可能您的元数据中有错误?

将环境变量QT_DEBUG_PLUGINS设置为非零。。重新运行你的程序,在这里发布错误消息。已经完成了,但是没有关于第二个插件有什么问题的消息,只是关于加载的插件。你是说输出中甚至没有提到第二个插件?这是不可能的。当设置此变量时,成功加载的插件将被记录到控制台,而失败的加载尝试更是如此。如果什么都没有,你的插件就找不到了。但是你在这里:[。插件名是libChatPlugin.so,几乎是最后一个。正如你所看到的,没有更多关于它的内容……:(顺便说一句……我在编写插件时从未尝试过的一件事:对多个插件使用同一个接口。提交引用无效。过时的链接?
#ifndef __PIROGRONIAN__P2P2__CHAT_PLUGIN__H__
#define __PIROGRONIAN__P2P2__CHAT_PLUGIN__H__

#include <QtNetwork/QtNetwork>
#include "Chat.h"
#include "PluginInterface.h"

namespace P2P2 {

    class ChatPlugin : public QObject, public PluginInterface {
        Q_OBJECT
        Q_PLUGIN_METADATA(IID "Pirogronian.P2P2.ChatPlugin")
        Q_INTERFACES(P2P2::PluginInterface)

        CoreServer *_server;
        QHash<Channel *, Chat *> _chats;

    public:
        virtual bool init(CoreServer *);
        virtual bool receiveObject(Object *);
        virtual int channelType();
    };

};

//Q_DECLARE_METATYPE(QPointer<P2P2::ChatPlugin>)

#endif
#ifndef __PIROGRONIAN__P2P2__PLUGIN_INTERFACE__H__
#define __PIROGRONIAN__P2P2__PLUGIN_INTERFACE__H__

#include "CoreServer.h"

namespace P2P2 {

    class PluginInterface {
    public:
        virtual bool init(CoreServer *) = 0;
        virtual bool receiveObject(Object *) = 0;
        virtual int channelType() = 0;
    };

};

Q_DECLARE_INTERFACE(P2P2::PluginInterface, "Pirogronian/P2P2/PluginInterface/1.0")

#endif