PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme beim kompilieren



Alex_K
17-07-2003, 15:23
ich mache gerade ein tutorial für wxWindows.
da gibt es 3 klassen, jeweils in einer cpp-datei + .h :

textapp.cpp
textrame.cpp
aboutdialog.cpp

in textapp.cpp wird ein objekt der klasse textframe erzeugt. und in textframe.cpp ein objet der klasse aboutdialog.

zu beginn des tutorials gab es die klasse aboutdialog noch nicht, da hab ich das ganz so kompiliert:

g++ textframe.cpp -c -o textframe.o $(wx-config --cppflags --ldflags --libs)
g++ textapp.cpp -o textapp $(wx-config --cppflags --ldflags --libs) textframe.o

so hat das ganze auch noch funktioniert.

nachdem die klasse aboutdialog dazu gekommen ist, wollte ich es mit folgenden befehlen kompilieren:

g++ AboutDialog.cpp -c -o AboutDialog.o $(wx-config --cppflags --ldflags --libs)
g++ textframe.cpp -c -o textframe.o $(wx-config --cppflags --ldflags --libs)
g++ textapp.cpp -o textapp $(wx-config --cppflags --ldflags --libs) textframe.o AboutDialog.o

aboutdialog und fextframe werden noch kompilert. bei textapp kommt aber folgende fehlermeldung:


AboutDialog.o(.text+0xd7): In function `AboutDialog::AboutDialog[not-in-charge](wxWindow*)':
: undefined reference to `vtable for AboutDialog'
AboutDialog.o(.text+0x435): In function `AboutDialog::AboutDialog[in-charge](wxWindow*)':
: undefined reference to `vtable for AboutDialog'
collect2: ld returned 1 exit status

Alex_K
18-07-2003, 09:03
so, nach stundenlangem suchen hab ich den fehler gefunden:
in der klasse Aboutdialog hab ich den destruktor folgender weise definiert:

virtual ~AboutDialog();

nachdem ich ihn so abgeändert hab hats funktioniert:

virtual ~AboutDialog() { }

jetzt frag ich mich warum die erste version nicht funktioniert hat??
ich dachte ein leerer block ( {} ) ist das gleichen wie eine leere anweisung ( ; )!?.

tuxipuxi
18-07-2003, 11:07
hi,

nein, das ist nicht so.
wenn du virtual ~aboutDialog(); schreibst ist das eine deklaration die implementiert werden muss.

eine undefined reference ist immer ein hinweis auf eine vergessene definition.

gruss,

tuxipuxi.