Seite 1 von 1

immer NULL bei QPluginLoader :-(

Verfasst: 9. November 2005 19:01
von [ToTTo]
Hallo,

ich habe ein Problem bei der Erstellung von DLLs unter QT 4.
Die DLL, die ich gemacht habe, wird in meiner Hauptapplikation leider nicht in den QPluginLoader eingeladen (bekomme einen NULL-Pointer zurück).
Ich habe mal ne kleine DLL als Beispiel gemacht wo aber leider derselbe Fehler entsteht.
Hier die Schnittstelle:

Code: Alles auswählen

class Test
{
public:
	virtual ~Test() = 0;
	virtual int get_Integer() = 0;
};
Q_DECLARE_INTERFACE(Test, "1")
Header der Plugin-Klasse:

Code: Alles auswählen

#ifndef MYQTPROJECT_H
#define MYQTPROJECT_H

#include <QtCore/qglobal.h>
#include "interface.h"

#ifdef Q_OS_WIN
#  ifdef BUILD_MYQTPROJECT
#    define MYQTPROJECT_EXPORT __declspec(dllexport)
#  else
#    define MYQTPROJECT_EXPORT __declspec(dllimport)
#  endif
#else
#  define MYQTPROJECT_EXPORT
#endif

#endif

class Plugin : public QObject, public Test
{
	Q_OBJECT
	Q_INTERFACES(Test)
public:
	Plugin()
	{
	}
	~Plugin()
	{
	}
	int get_Integer()
	{
		return 5;
	}
}
Q_EXPORT_PLUGIN(Plugin)
und hier eine kleine Hauptapplikation:

Code: Alles auswählen

#include <QCoreApplication>
#include <QPluginLoader.h>
#include "interface.h"

#include <iostream>

int main(int argc, char *argv[])
{
	QCoreApplication app(argc, argv);
	QPluginLoader loader("C:/MyQtProject2/debug/MyQtProject.dll");
	QObject* object;
	object = loader.instance();
        
    return 0;
}
Ich habe das Gefühl das bei der Erstllung schon was schief geht.
Ich erzeuge einfach ein neues QT Shared Library Projekt, werfe alle Dateien bis auf die Hauptdatei raus und schreibe meinen Code in die Hauptdatei.

Ich hoffe mir kann jemand helfen....

Gruß

ToTTo

Verfasst: 10. November 2005 19:42
von FlorianBecker
Du brauchst ein Plugin Object, kein Shared Object

Verfasst: 11. November 2005 11:49
von [ToTTo]
Wie funktioniert die Erstellung eines Plugin Objektes unter WIndows genau?