PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kdevelop_Qmake_QT-Prog_Komp.fehler



awehrm
24-05-2006, 21:02
Hallo!

Ich bin gerade dabei mir ein bisschen QT anzueignen.
Habe für meine erste Anwendung also in KDevelop ein
C++ Projekt unter QMake/Application erzeugt.
Das Programm besteht eigentlich aus nur einem Dialog, welcher
als eigene Klasse existiert.
Wenn ich den Code nun mit "Rebuild Project" erneut kompilieren will
(erneut weil ich die Klasse in eine andere Datei ausgelagert habe und sonst
Änderungen in dieser sonst nicht berücksichtigt würden),
bekomme ich folgende Fehlermeldungen:



cd '/home/xargon/progging_stuff/qt_finddialog' && QTDIR="/usr/local/qt" gmake -k clean && QTDIR="/usr/local/qt" gmake -k
( [ -d src ] && cd src ; grep "^qmake_all:" Makefile && gmake -f Makefile qmake_all; ) || true
( [ -d src ] && cd src ; gmake -f Makefile clean; ) || true
rm -f moc_qt_finddialog.o
rm -f moc_qt_finddialog.cpp
rm -f qt_finddialog.o main.o
rm -f *~ core *.core
cd src && gmake -f Makefile
compiling qt_finddialog.cpp (g++)
compiling main.cpp (g++)
generating moc_qt_finddialog.cpp (moc)
compiling moc_qt_finddialog.cpp (g++)
test -d ../bin/ || mkdir -p ../bin/
linking ../bin/qt_finddialog (g++)
main.o(.text+0x23): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `vtable for FindDialog'
main.o(.text+0x2a): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `vtable for FindDialog'
main.o(.text+0x3a): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x7a): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x109): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x159): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x1a9): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x22b): more undefined references to `FindDialog::tr(char const*, char const*)' follow
main.o(.text+0x4e3): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `vtable for FindDialog'
main.o(.text+0x4ea): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `vtable for FindDialog'
main.o(.text+0x4fa): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x53a): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x5c9): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference
to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x619): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x669): In function `FindDialog::FindDialog(QWidget*, char const*)':
: undefined reference to `FindDialog::tr(char const*, char const*)'
main.o(.text+0x6eb): more undefined references to `FindDialog::tr(char const*, char const*)' follow
main.o(.text+0x9c0): In function `FindDialog::findClicked()':
: undefined reference to `FindDialog::findPrev(QString const&, bool)'
main.o(.text+0xa09): In function `FindDialog::findClicked()':
: undefined reference to `FindDialog::findNext(QString const&, bool)'
collect2: ld returned 1 exit status
gmake[1]: *** [../bin/qt_finddialog] Error 1
gmake[1]: Target `first' not remade because of errors.
gmake: *** [sub-src] Error 2
gmake: Target `first' not remade because of errors.
*** Exited with status: 2 ***



Undefined Reference kenne ich nur in dem Zusammenhang,
alsdass der Compiler bestimmte Libraries nicht linken kann.
Hier dürfte dir das eigentlich nicht der Fall sein, da das Projekt ja
als "QT-Programm" ausgelegt ist.


Danke schonmal für eure Hilfe.

mfg
awehrm

Enigma25
24-05-2006, 21:30
Probiers mal mit :
qmake nochmal ausführen(rechts oben im KDevelop Unterprojekte->src)

Dann "Projekt aufräumen" unter Menupunkt "Erstellen" 1 bis 2 mal..
und "Projekt neu erstellen" ausführen.

Ich weiss, das klingt unprofessionell, hat mir aber schon ein paar mal bei vtable-Fehlern geholfen ..

ansonsten mal Quellcode bereitstellen, damit man da mal Fehler suchen kann..

Viel Erfolg
Thomas

awehrm
25-05-2006, 10:45
Ok ich hab's hingekriegt.
Ich hab einfach eine neue File erstellt und ihm gesagt, dass er die
zum Projekt hinzufügen soll.
Danach hats dann auch geklappt, leider sah der Dialog noch nicht so aus wie gewünscht, aber da muss ich selber wohl nochmal ran.
Was mir jetzt noch nicht gefällt ist:
Wenn ich eine File zum Projekt hinzufüge, befindet sich diese automatisch
im "src" Verzeichnis.
Kann ich auch sagen dass er die in einem bestimmten Verzeichnis anlegen soll?
Bei mehreren Header-Files kann es ja schonmal schnell unübersichtlich dort werden.