undefined reference to problem

Alles rund um die Programmierung mit Qt
Antworten
a-Ali-YaH
Beiträge: 2
Registriert: 30. April 2007 15:14

undefined reference to problem

Beitrag von a-Ali-YaH »

Also ich bekomme beim compilieren immer diese Fehlermeldung
Benutzte die aktuellste qt version. Der Fehler kommt übrigens immer wenn er die Ausführbare Datei erstellt.

Code: Alles auswählen

g++  -o Editor EditorPres.o EditorDlg.o EditorMain.o SearchDlg.o SearchPres.o FileIOAnw.o Messagge.o moc_EditorPres.o moc_EditorDlg.o    -L/usr/lib -lQtGui -lQtCore -lpthread
SearchDlg.o: In function `SearchDlg::SearchDlg()':
SearchDlg.cpp:(.text+0x44): undefined reference to `vtable for SearchDlg'
SearchDlg.cpp:(.text+0x4b): undefined reference to `vtable for SearchDlg'
SearchDlg.o: In function `SearchDlg::SearchDlg()':
SearchDlg.cpp:(.text+0x74): undefined reference to `vtable for SearchDlg'
SearchDlg.cpp:(.text+0x7b): undefined reference to `vtable for SearchDlg'
SearchPres.o: In function `SearchPres::SearchPres()':
SearchPres.cpp:(.text+0x45b): undefined reference to `vtable for SearchPres'
SearchPres.cpp:(.text+0x462): undefined reference to `vtable for SearchPres'
SearchPres.o: In function `SearchPres::SearchPres()':
SearchPres.cpp:(.text+0x54b): undefined reference to `vtable for SearchPres'
SearchPres.cpp:(.text+0x552): undefined reference to `vtable for SearchPres'
collect2: ld gab 1 als Ende-Status zurück
make: *** [Editor] Fehler 1
Da diese Fehlermeldung meist in zusammenhang mit nicht eingebundenen Header-Files ist list ich mal hier die Abhängigkeiten auf:

Es ist ein Editor nach dem 3 Schichtenmodell mit folgenden Dateien:
  • EditorMain.cpp (Die main halt)
  • EditorDlg.cpp, EditorDlg.h (Dialogmanagmentschicht)
  • EditorPres.cpp, EditorPres.h (Presentationsschicht)
  • FileIOAnw.cpp, FileIOAnw.h (Anwendungsschicht)
  • Messagge.cpp, Messagge.h (zum abfangen von Fehlern)
so der funktioniert einwandfrei
auch die Suchfunktion wenn ich sie mit einer eigenen main ausprobiere mit den Dateien funzt:
  • SearchDlg.cpp, SearchDlg.h
  • SearchPres.cpp, SearchPres.h
Allerdings wenn ich jetzt die Suchfunktion in meinen Editor einbaue kommt immer die oben genannte Fehlermeldung.
Die Header sind alle richtig eingebunden an denen kann es nicht liegen.

Auf die search() aus SearchDlg.cpp greif ich folgendermassen zu:

Code: Alles auswählen

// EditorDlg.h
 SearchDlg *dialog;
// EditorDlg.cpp
 dialog = new SearchDlg();
// z.B. hier wird ein string von dieser Funktion zurückgegeben
 QString textToFind = dialog->search();
Weis jemand was ich hier übersehen hab?
Für die die das durchkompilieren möchten hab ich ein Archiv.zip drangehängt. Makefile ist auch schon drin.

gruß
Dateianhänge
Archiv.zip
(10.08 KiB) 133-mal heruntergeladen
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Lösch mal das *.pro-File und laß mit

Code: Alles auswählen

qmake -project
ein neues erstellen. Dann funktionierts...
piXelshooter
Beiträge: 43
Registriert: 25. März 2007 21:19

Beitrag von piXelshooter »

ist es absicht dass manche klassen keinen destruktor haben?
Ich krieg dann immer linker error, und wenn er nicht virtuell ist, den von dir angesprochenen fehler
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Der gcc 4.1.2 meldet keine Fehler wenn der Destruktor nicht vorhanden ist, warum auch, dafür gibt es ja den Default-Destruktor... Und virtuell muß er nur sein, wenn die Klasse virtuelle Funktionen enthält...
a-Ali-YaH
Beiträge: 2
Registriert: 30. April 2007 15:14

Beitrag von a-Ali-YaH »

Super das mit makefile neu erstellen ohne der project datei hat super geklappt!

Danke für die Antwort!
war schon am verzweifeln...
mollitz
Beiträge: 81
Registriert: 5. April 2007 10:55

Beitrag von mollitz »

in den faq, hätte es auch gestanden :?
Antworten