[Qt4] [WIN] Gehen in Dlls keine Objecte mehr?

Alles rund um die Programmierung mit Qt
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

[Qt4] [WIN] Gehen in Dlls keine Objecte mehr?

Beitrag von FlorianBecker »

dongle.obj : error LNK2019: unresolved external symbol "public: static struct QM
etaObject const plaa::MessageBox::staticMetaObject" (?staticMetaObject@MessageBo
x@plaa@@2UQMetaObject@@B) referenced in function "public: static class QString _
_cdecl plaa::MessageBox::tr(char const *,char const *)" (?tr@MessageBox@plaa@@SA
?AVQString@@PBD0@Z)
C:\plaasoft\data\lib\dongle.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'

Das kommt immer, wenn ich gegen eine Lib linken möchte. Ging mit Qt3, mit Qt4 nicht mehr!? Oder ist das nur wieder ein neuer Fehler der Qt 4.0.1?
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Du linkst also eine Dll gegen ne Lib, oder was?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ich linke eine DLL gegen eine Lib, exact.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Beim linken von einer Lib werden die Abhängigkeiten nicht aufgelöst, also kann der Fehler eigentlich nur dann auftreten, wenn du diese Lib gegen eine Exe oder eine Dll linkst...
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hä? Ja, beim linken eine LIB. Aber ok, pass auf:

Ich habe eine Lib mit dem Namen core.lib, dazu gehört core.dll und auf die core.dll greifen ein paar Dlls zu, eben die dongle.dll, also muss ich die dongle.dll gegen die core.lib linken, was ich ja auch tue und genau dann tritt der oben gezeigte Fehler auf.

Unter Qt3 ging das und mit nicht Qt libs gehts ja auch hervorragend. Aber das ist ja kein Einzelfall, bei allen anderen Dlls, die ich gegen die core.dll linken möchte, wenn es sich um Objects handelt bekomme ich immer diese Fehlermeldungen.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Ok, das bezeiche ich als Linken gegen eine Dll und nicht eine Lib. Dass es technisch über ne lib geht ist klar. Ich dachte du meintest eine statische Lib...


Und core.dll ist eine Qt Dll oder was?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

core.dll ist meine dll
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

ja, das ist klar. Die Frage war, ob du in dieser Dll Qt verwendest?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ja, in beiden, sonst hätte ich das Problem gar nicht, wie gesagt, es passiert nur mit Q_OBJECTs. Bei STL Libs passiert das nicht und sonst auch nicht. Komische Sache.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

poste mal bitte den header zu core.dll.... mal sehen
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Code: Alles auswählen

#ifdef WINDOWS
#  ifndef PLAASOFT_STATIC
#    ifdef PLAASOFT_MAKEDLL
#      define EXPORT_PLAASOFT __declspec(dllexport)
#    else
#      define EXPORT_PLAASOFT __declspec(dllimport)
#    endif
#  endif
#endif
#ifndef EXPORT_PLAASOFT
#define EXPORT_PLAASOFT
#endif
Was meinst du, welchen Header? Es gibt mehrere Header in der Datei, ist das da oben das, was du meinst? Die Header werden dann jeweils mit class EXPORT_PLAASOFT ClassName behandelt und in der Pro Datei wird für Windows WINDOWS und PLAASOFT_MAKEDLL definiert.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Da scheint alles korrekt zu sein... Arbeitest du mit namespace?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ja. Ja, wie gesagt, wenn das nun Qt3 wäre geht es ja auch problemlos.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

ich würde an deiner Stelle erstmal ohne Namespace probieren. Ich meine eigene Namespaces...
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ok, probieren kann man das ja mal. Wäre aber Schade. Hast du keine Qt4 Lib mit Q_OBJECT die du wo gegen linkst?
Antworten