Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

26.06.2008, 13:32

Problem mit Qt

Hallo,

vllt kann mir ja jemand bei diesem Problem helfen, ich verstehe einfach nicht was der für ein Problem hat bzw warum er da ne undefined reference bringt? Der Fehler wird von diesen includes verursacht.


Quellcode

1
2
#include <qapplication.h>  
#include <qmainwindow.h>   


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cd '/home/antivalent/programming/MyGUI/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k 
gmake all-recursive
Making all in src
g++ -DHAVE_CONFIG_H -I. -I/home/antivalent/programming/MyGUI/src -I.. -I/usr/include/vtk-5.0/ -I/usr/local/lib/ivt-1.1.2/include -I/usr/local/lib/opencv-1.0.0/include/opencv -I/usr/qt/3/include/ -O0 -g3 -MT mygui.o -MD -MP -MF .deps/mygui.Tpo -c -o mygui.o /home/antivalent/programming/MyGUI/src/mygui.cpp
mv -f .deps/mygui.Tpo .deps/mygui.Po
/bin/sh ../libtool --tag=CXX --mode=link g++ -O0 -g3 -o mygui mygui.o 
g++ -O0 -g3 -o mygui mygui.o 
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+0xc): undefined reference to `QGList::clear()'
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+0x10): undefined reference to `QGList::~QGList()'
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+0x14): undefined reference to `QGList::~QGList()'
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+
0x18): undefined reference to `QPtrCollection::newItem(void*)'
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+0x20): undefined reference to `QGList::compareItems(void*, void*)'
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+0x24): undefined reference to `QGList::read(QDataStream&, void*&)'
mygui.o:(.rodata._ZTV6QGList[vtable for QGList]+0x28): undefined reference to `QGList::write(QDataStream&, void*) const'
mygui.o:(.rodata._ZTI6QGList[typeinfo for QGList]+0x8): undefined reference to `typeinfo for QPtrCollection'
collect2: ld returned 1 exit status
gmake[2]: *** [mygui] Error 1
gmake[2]: Target `all' not remade because of errors.
gmake[2]: Nothing to be done for `all-am'.
gmake[1]: *** [all-recursive] Error 1
gmake: *** [all] Error 2
*** Beendet mit Status: 2 ***


Mfg
Thinkpad T61
Intel Core Duo 2.00 GHz
KDE
linux-2.6.28-gentoo-r5/ gcc-4.1.2

2

26.06.2008, 14:43

Hab ichs jetzt übersehen oder fehlt hier die Angabe, dass es mit den Qt Libraries noch gelinkt werden soll...
Das Einbinder der Headerdateien reicht natürlich nicht aus.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

3

26.06.2008, 14:52

und wie mache ich das?
Thinkpad T61
Intel Core Duo 2.00 GHz
KDE
linux-2.6.28-gentoo-r5/ gcc-4.1.2

4

26.06.2008, 16:13

Hab mit Qt schon ewig nichts mehr gemacht, aber wird auf irgendwas in Richtung des Parameters "-lqt" oder ähnlichen hinauslaufen.

Google:
http://www.google.de/search?q=undefined+…List%3A%3Aclear()'+&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
Damit findest du haufenweise Erklärungen, wie und wieso.

Ohne dir was vorschreiben zu wollen, aber solltest da vielleicht etwas nachlesen, wenn dir nicht klar ist, warum das Einbinden der Headerdateien nicht reicht.

Viel Erfolg!
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

5

26.06.2008, 23:54

Benutz doch einfach Qmake :]
Vereinfacht die Sache ein wenig.
Unix wurde nicht entwickelt, um seine Benutzer daran zu hindern, dumme Dinge zu tun, denn das würde diese auch davon abhalten, schlaue Dinge zu tun.“ – Doug Gwyn

6

27.06.2008, 08:16

Wie schon bereits erwähnt: der Linker hat ein Problem nicht der Compiler. Die Headerfiles sind in Ordnung. Der Linker hat bloß keine Ahnung wo die verwendeten Funktionen drin sind ...

Ich nehme an, du willst die Qt-3.x verwenden und nicht die Qt-4.x (so wie deine Includes aussehen ...).

Die Qt 3.x Installation und damit die Libraries befinden sich bei Gentoo in /usr/qt/3/lib.
Ergo muß deine Linkerzeile noch diese Optionen bekommen:

Quellcode

1
-L/usr/qt/3/lib -lqt


ABER: das ist leider bei Debian, SuSE & Co. überall anders gelöst. Sprich: für den Pfad zur Qt-3.x waren die einzelnen Linux-Distris recht ... "kreativ" ...

Dies bedeutet das /usr/qt/3/lib auf Debian nicht funkt, sondern ein ganz anderes Verzeichnis hat.

Falls du die GNU Autotools verwendest gibt es Autoconf-Macros, die die bequem diese Verzeichnis aufspüren ... auch sollte normalerweise die Variable QTDIR gesetzt sein (die in diesem Fall auf /usr/qt/3/ zeigen sollte) ... darauf kann man sich leider nicht ganz verlassen. :(

Qt-4.x im übrigen löst es anders ... dort sind i.A. alle libs in /usr/lib zu finden (was der Linker standardmäßig aufsucht). Auch wird pkg-config unterstützt was zusätzlich das Programmiererherz erfreut ...
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>