Error LNK2001: Nicht aufgelöstes externes Symbol ""public: static struct QMetaObject const PathServiceFactory::staticMetaObject"
-
Hallo,
Ich eine dll gemacht, die einen Dialog und die o.g. PathServiceFactory bereitstellen "soll".
Wenn ich diese dll bzw. lib in einem anderen Projekt referenziere wird alles schön vom Compiler übersetzt.
Aber der Linker kann das o.g. staticMetaIbject nicht auflösen.
Das verwunderliche ist, dass ich das gleiche in einem anderen Projekt genauso mache und alles super funktioniert.
Für mich bedeutet das aber: die dll mit der o.g. Schnittstelle scheint ja richtig implementiert zu sein.
Aber irgendwie unterscheiden sich die importierenden dlls.Ich habe schon alles mögliche probiert und recherchiert, aber bisher keinen Hinweis auf eine Lösung gefunden.
Hier nochmal die Fehlermeldung des Linkers:
1>Verknüpfen...
1> Bibliothek "C:\Programme\Virtuos_V_1_6_0\sdk\NumCad\Release\NumCadTextEditor.lib" und Objekt "C:\Programme\Virtuos_V_1_6_0\sdk\NumCad\Release\NumCadTextEditor.exp" werden erstellt.
1>NumCadTextEditor.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: static struct QMetaObject const NumCadPathServiceFactory::staticMetaObject" (?staticMetaObject@NumCadPathServiceFactory@@2UQMetaObject@@B)".
1>C:\Programme\Virtuos_V_1_6_0\sdk\NumCad\Release\NumCadTextEditor.dll : fatal error LNK1120: 1 nicht aufgelöste externe Verweise. -
Sieht aus, als wird das MOC-File für PathServiceFactory nicht gelinkt. Solltest du es im Nachhinein zu einem QObject gemacht haben, nachdem es vorher bereits im Projekt existiert hat, muss QMake neu aufgerufen werden bzw. das Projekt neu in VS importiert werden. Dadurch werden die Buildschritte für das MOC-File erzeugt.
-
Ja aber warum kann ich diese dll in einem anderen Projekt ohne Probleme verwenden?
-
Vielen Dank für Deinen Hinweis,
Ich habe das Problem nun gefunden:
Ich arbeite nämlich mit Visual Express und da muss ich einiges von Hand in Project -files machen.
Hierbei habe ich für den PreCopmpiler ein falsches Symbols gesetzt, so dass der Compiler die header von meiner Lib nicht korrekt übersetzt hat.