Seite 1 von 1

Plugin selber schreiben.

Verfasst: 14. November 2009 16:32
von abcschützling
Hallo Leute,

ich versuche gerade ein Plugin selber zu schreiben. Leider funktioniert das nicht so sehr. :( Vielleicht kann mir da jemand helfend zur Seite springen.

So sieht die Schnittstelle auf der Anwendungsseite aus:

#ifndef INITIMAGEPLUGININTERFACE_H
#define INITIMAGEPLUGININTERFACE_H

class QImage;

class InitImagePluginInterface {

public:
virtual ~InitImagePluginInterfae(){}

// Methode für die Initialisierung
virtual void init(QImage &image);
};

Q_DECLARE_INTERFACE(InitImagePluginInterface,"com.abc.BA_0.InitImagePluginInterface/1.1")

#endif

So sieht die integration der Schnittstelle in das Plugin aus:

#ifndef MYINITIMAGEINTERFACE_H
#define MYINITIMAGEINTERFACE_H

#include "../BA_0/InitImagePluginInterface.h"

class QObject;

class MyInitImageInterface : public QQbject,
public InitImagePluginInterface
{

Q_OBJECT
Q_INTERFACES(InitImagePluginInterface)

public:
void init(QImage &image);
};
#endif

Und so die dazu gehörige .cpp Datei:

#include <QtGui>

#include "MyInitImageInterface.h"
#include "Window.h"

void MyInitImageInterface::init(QImage &image)
{
Window window(image);
}
Q_EXPORT_PLUGIN2(myinitimageinterface, MyInitImageInterface)

Mehr ist das nicht. Aber es funktioniert aus irgendwelchen Gründen nicht.

Gruß

Das sind übrigens die Fehlermeldungen.

Verfasst: 14. November 2009 16:48
von abcschützling
Kompilieren...
moc_MyInitImageInterface.cpp
main.cpp
MyInitImageInterface.cpp
Code wird generiert...
Verknüpfen...
Bibliothek '..\BA_0.0.4\plugins\testfilter\Test Filter Interface lib.lib' und Objekt '..\BA_0.0.4\plugins\testfilter\Test Filter Interface lib.exp' wird erstellt
MyInitImageInterface.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: __thiscall Window::Window(class QImage &)" (??0Window@@QAE@AAVQImage@@@Z)', verwiesen in Funktion '"public: virtual void __thiscall MyInitImageInterface::init(class QImage &)" (?init@MyInitImageInterface@@UAEXAAVQImage@@@Z)'
MyInitImageInterface.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual void __thiscall InitImagePluginInterface::init(class QImage &)" (?init@InitImagePluginInterface@@UAEXAAVQImage@@@Z)
main.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual void __thiscall InitImagePluginInterface::init(class QImage &)" (?init@InitImagePluginInterface@@UAEXAAVQImage@@@Z)
..\BA_0.0.4\plugins\testfilter\Test Filter Interface lib.dll : fatal error LNK1120: 2 unaufgelöste externe Verweise

Verfasst: 14. November 2009 21:21
von Christian81
1. Benutze bitte die [

Code: Alles auswählen

] - Tags!
2. Wenn er Window::Window() nicht findet wirst Du wohl vergessen haben es zu implementieren.