Seite 1 von 1

undefined reference ??

Verfasst: 11. November 2010 11:19
von malabarista
Ich erhalte die nachstehende Fehlermeldung und habe keine Ahnung, wo ich suchen soll. Das Kuriose daran ist: das Projekt wurde fehlerfrei compiliert. Dann habe ich in einem völlig anderen Unterprogramm (editu.cpp) eine Code-Zeile eingefügt und nun taucht diese Fehlermeldung auf, obwohl ich
weder am am Mainprogramm proxx.cpp noch am proxxsub.cpp (welches das Thauptfenster enthält) nichts geändert habe.

proxx.o: In function `main':
proxx.cpp:(.text+0xaa): undefined reference to `Thauptfenster::Thauptfenster()'
moc_proxxsub.o:(.rodata._ZTV13Thauptfenster[vtable for Thauptfenster]+0x88): undefined reference to `Thauptfenster::closeEvent(QCloseEvent*)'

Hat jemand eine Idee, was da passiert ist ?

Verfasst: 11. November 2010 11:26
von franzf
Ich nehme an, du hast Thauptfenster::Thauptfenster und Thauptfenster::closeEvent() nur deklariert, aber nicht definiert.
Ansonsten: kommen Thauptfenster und proxx.cpp ins selbe binary?

Verfasst: 11. November 2010 12:09
von malabarista
Ich habe inzwischen alle Funktionen, die bisher zwar vorhanden aber leer waren) mit einem trivialen Inhalt gefüllt (int i; i=9;)

Danach wurde es besser, d.h. es gab nur noch diese eine Fehlermeldung (vorher waren es mehrere ähnliche)

Aber reprozierbar ist:
wenn ich nach dieser Fehlermeldung alle xxx.o und alle moc_xxx im Projektverzeichnis lösche und von vorn beginne mit
qmake -project
qmake
make

wird es fehlerfrei übersetzt und läuft.
Ändere ich nun wiederum wie oben beschrieben etwas in dem anderen Programm, gibt es wieder diese Fehlermeldung.

Verfasst: 11. November 2010 19:29
von padreigh
warum hast du leere funktionen? Du musst nicht alles was virtuell ist auch in dein .h packen geschweige denn mit "trivialitäten" füllen ... lass sie einfach weg, dann wird die Implementation der Elternklasse ausgeführt ...

Verfasst: 11. November 2010 19:36
von malabarista
Diese Funktionen sind nicht überflüssig, sondern sie werden noch benötigt.
Nur ich habe jetzt erstmal das Gerüst gemacht und diese Funktionen mit den vorgesehen slots verknüpt, aber keinen Inhalt hineingeschrieben.

Verfasst: 11. November 2010 19:43
von franzf
malabarista hat geschrieben:Ändere ich nun wiederum wie oben beschrieben etwas in dem anderen Programm, gibt es wieder diese Fehlermeldung.
Spezifiziere "anderes Programm". Und bitte poste Code! Man kann dir nicht helfen, wenn nur vage Beschreibungen gegeben werden. Und "wie oben beschrieben" heißt "füge ich eine Zeile hinzu"? Merkst du was? Die "eine Zeile" wäre mal interessant".
Bitte jetzt aber nicht nur auf den letzten Satz antworten, sondern das obige auch beachten, z.B. das mit dem Code.
Und du hast immer noch nicht gesagt, ob die "xxx" und dein "Thauptfenster" ins selbe Binary (.exe, .dll) kommen.