Ich habe rohe (kein QtDesigner) Qt5-Projekt mit zwei einfachen Plugins, die man nicht laden mit lakonischen Fehler: "Plugin Verification Data Mismatch"."Plugin Verification Data Mismatch" beim Laden Plugin für QT5-Projekt
-Header des ersten Plugin (die Lasten und gut laufen):
#ifndef __PIROGRONIAN__P2P2__GUI_PLUGIN__H__
#define __PIROGRONIAN__P2P2__GUI_PLUGIN__H__
#include "QtCore/QtCore"
#include "PluginInterface.h"
namespace P2P2 {
class GuiPlugin : public QObject, public PluginInterface {
Q_OBJECT
Q_PLUGIN_METADATA(IID "Pirogronian.P2P2.GuiPlugin")
Q_INTERFACES(P2P2::PluginInterface)
public:
bool init(CoreServer *);
bool receiveObject(Object*);
int channelType();
};
};
#endif
Die zweite, die Last nicht:
#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
Hier ist PluginInterface Header:
#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
Ich bin kein Experte und schreiben Plugins für Qt5 ist sehr kursorisch beschrieben. Aber da ich keinen wesentlichen Unterschied zwischen diesen Plugins feststellen kann, wird das Problem für mich ziemlich mysteriös. Mayby ein Fehler in Qt? Ich habe beide Male mehrmals umgebaut, um sicher zu gehen, dass beide auf dem neuesten Stand sind.
Ich versuche, den gesamten Code irgendwo in Netz gestellt, aber es wird eine Weile ... Edit nehmen: done - als zip-gepackt hier: http://uploaduj.net/D74c2f/v0-1-pure-zip/
Umgebungsvariable QT_DEBUG_PLUGINS auf nicht Null setzen .. Programm erneut ausführen, Fehlermeldung hier ausgeben. – Greenflow
Bereits getan, aber es gibt keine Nachrichten darüber, was mit dem zweiten Plugin falsch ist, nur über geladene. – pirogronian
Du meinst das zweite Plugin wird nicht einmal in der Ausgabe erwähnt? Das ist nicht möglich. Erfolgreich geladene Plugins werden in der Konsole geloggt, wenn diese Variable gesetzt ist, und noch mehr fehlgeschlagene Ladeversuche. Wenn es nichts gibt, wird Ihr Plugin nicht gefunden. – Greenflow