[C++/Qt/VS]Qt-DLL erstellen

cwriter

Erfahrenes Mitglied
Hallo Welt

Beim Erstellen von DLLs mit Qt-Migrationshintergrund in Visual Studio bin ich auf ein hübsches kleines Problem namens "C2491" gestossen.
error C2491: 'Class::staticMetaObject': Definition von Statisches Datenmember für dllimport nicht zulässig.

Damit wird aller relevante Code umklammert:
C++:
#ifdef EXPORT_DLL
#define DLLEXP Q_DECL_EXPORT
#else
#define DLLEXP Q_DECL_IMPORT
#endif
Um die moc_*-Datei einzubinden, gibt es ein Include dafür.

Im QtCreator würde dieses Problem schlicht mit
Code:
TEMPLATE = lib
in der .pro-Datei gelöst.
Die Klassen werden selbstverständlich mit
C++:
class DLLEXP Class
{

};
angegeben.
Wenn ich einfach immer alles mit Q_DECL_EXPORT markiere (= __declspec(dllexport)), dann läuft alles. Nur ist das ja eigentlich nicht der Sinn der Sache ;-)

Weiss jemand Rat?
Gruss
cwriter
 
Hallo,

das muss nicht sein.
Du kannst das Format des Makefiles, welches Du mit "qmake" erstellst selbst
auswählen.
So kannst Du z.B. "qmake -spec win32-msvc2010" dazu verwenden, um
Makefile's für VisualC++2010 zu erstellen.
Dann brauchst Du nur noch in der VC-Console "nmake" eingeben und schon wird alles kompiliert.
Falls Du bereits moc dateien hast, dann lösche diese mit "nmake Makefile clean" und starte nmake erneut, um Fehler aus dem Weg zu gehen.

Hope this helps
Jens
 
Hallo

Der Fehler war ein anderer: Ich hatte die mocs aus Versehen in der Headerdatei inkludiert. Dasselbe include in der .cpp löste das Problem.

Gruss
cwriter
 
Zurück