Seite 1 von 1

Linker Problem

Verfasst: 10. Juni 2011 11:27
von huckleberry
Hallo Forum,


ich habe da ein Linker Problem:
2> Creating library C:\Eigene Dateien\project\build-vs9-2322\MyProject\Debug\MyProject.lib and object M:\Eigene Dateien\project\build-vs9-2322\MyProject\Debug\MyProject.exp
2>MyClassDialog.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall MyClassDialog::metaObject(void)const " (?metaObject@MyClassDialog@@UBEPBUQMetaObject@@XZ)
2>MyClassDialog.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall MyClassDialog::qt_metacast(char const *)" (?qt_metacast@MyClassDialog@@UAEPAXPBD@Z)
2>MyClassDialog.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall MyClassDialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MyClassDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
2>C:\Eigene Dateien\project\build-vs9-2322\MyProject\Debug\MyProject.dll : fatal error LNK1120: 3 unresolved externals
Es wird fehlerfrei kompiliert.
*.h und *.cpp liegen im Solution Explorer in den entsprechenden Header und Source Ordnern.
Google sagt, dass andere Klassen, auf dessen Funktionen NICHT zugreifen könnten.
Die lib sei falsch oder gar nicht verlinkt:
--> Project Settings --> Configuration Properties --> General --> Configuration Type war auf *.dll. Soll eig. auch so sein. Und im oberproject habe ich auch die *.lib welche dieser produziert bei Additional Linker Files eingetragen.

Hat jemand Hinweise für mich? Ich danke im voraus.

Mfg Huck

Verfasst: 10. Juni 2011 11:33
von RHBaum
MyClassDialog
Verwendet doch signale und Slots nehm ich mal an ...

QObject-Macro steht im Header ?
die vom Moccer erzeuge datei (irgendwas mit MyClassDialog_moc.cpp) wird mitcompiliert und gelinkt ?

Ciao ...

Verfasst: 10. Juni 2011 12:04
von huckleberry
RHBaum hat geschrieben: Verwendet doch signale und Slots nehm ich mal an ...

QObject-Macro steht im Header ?
die vom Moccer erzeuge datei (irgendwas mit MyClassDialog_moc.cpp) wird mitcompiliert und gelinkt ?
Jupp, Signals und Slots und jupp macro steht im Header:

Code: Alles auswählen

class MyClassDialog: public QDialog
{
    Q_OBJECT
//... usw...
Im Ordner ist die Datei "moc_MyClassDialog.cxx_parameters" zu sehen, die eigenliche moc (moc_MyClassDialog.cxx) fehlt aber? Diese wurde dann nicht kompiliert? Oder liegt diese woanders (eigentlich immer im gleiche Ordner woseit ich weiss??)?

Wo kann ich nachsehen, ob die moc mitgelinkt wird?

Verfasst: 14. Juni 2011 09:17
von huckleberry
alles klar. Nun hab ich das Macro mal auskomentiert, keine Fehler mehr???

Eigenartig.