PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kdevelop und QT - "undefined reference to ..."


Darkheart
14.07.2004, 11:13
Hallo zusammen,

ich code mir gerade unter Kdevelop eine QT-Konsolen-Anwendung zusammen, die unter anderem auch die pcap- und die mysql-Headerdatei mit einbinden soll (reiner C-Code). Das Programm wäre jetzt bereit für den ersten Start, allerdings kriege ich beim Compilieren des Projektes immer wieder einen Haufen Fehlermeldungen vom Linker mit

"undefined reference to ..."

Unter anderem sind auch die in den beiden genannten Header-Dateien deklarierten Funktionen betroffen. Außerdem findet er plötzlich meine eigenen Routinen, die ich geschrieben habe nicht mehr, obwohl beim Einzelkompilieren der jeweiligen Klassen alles glatt verlaufen ist.

Kann mir jemand sagen, wie ich den o.g. Fehler beseitige. So wie ich das sehe, ist das wahrscheinlich ein Fehler aufgrund einer fehlenden Einstellung in KDevelop oder eines fehlenden Schalters im make-File.

Danke für Eure Hilfe

Udo Gerhards


FireBird2002
14.07.2004, 11:36
eine QT-Konsolen-Anwendung

Was ist das? Ich dachte QT ist eine GUI-Biblothek, wie kann man denn da ne Konsolenanwendung schreiben???

Du mußt natürlich die entsprechendn Biblotheken dazu einbinden, da gibt's eine Einstellung im KDevellop dazu.

Darkheart
14.07.2004, 11:42
Na ja, man klickt in KDevelop halt einfach unter C++ auf "QT-Make Project" und dann auf "Hello world programm" und man bekommt ein einfaches .cpp-File, ohne irgendwelche grafischen Klassen etc.

Aber mir ist eher an einer Lösung gelegen. Wo ist die Einstellung? Ich dachte, es reicht, wenn ich die entsprechenden Headerdateien in meinen Programmheadern einbinde?!?

Gruß

Udo

FireBird2002
14.07.2004, 14:05
Die Headerdateien enthalten nur die Funktionsprototypen, du mußt die Biblotheken (.a,.o,.so) mit einbinden. Düften hier libmysql , und libpcap heißen. Wo die Einstellung ist k.A. Notfalls das Makefile ändern einfach beim gcc den Switch "-Xlinker,libmysql,libpcap" anhängen

Darkheart
14.07.2004, 17:51
Leider keine Wirkung! Ich habe beim Makefile einfach unter

CC = gcc

den Switch mit angehängt. Das ganze sieht als jetzt so aus

CC = gcc -Xlinker,libmysql,libpcap

aber ich krieg das Project nach wie vor nicht compiliert. Hier nochmal ein Auszug aus den Fehlermeldungen, die ich bekomme:

...
*test -d ../bin/ || mkdir -p ../bin/
*g++ -o ../bin/nwarp nwarp.o nw_database.o nw_device.o nw_dev_storage.o nw_standarts.o -L/usr/lib/ -L/usr/lib/qt3/lib/ -L/usr/X11R6/lib/ -lqt -lXext -lX11 -lm
*nwarp.o(.text+0x60): In function `main':
*: undefined reference to `pcap_findalldevs'
*nwarp.o(.text+0x145): In function `main':
*: undefined reference to `pcap_lookupnet'
*nw_database.o(.text+0xaf): In function `nw_database::nw_database[not-in-charge]()':
*: undefined reference to `mysql_init'
*nw_database.o(.text+0x195): In function `nw_database::nw_database[not-in-charge]()':
*: undefined reference to `mysql_real_connect'
*nw_database.o(.text+0x1aa): In function `nw_database::nw_database[not-in-charge]()':
*: undefined reference to `mysql_errno'
*nw_database.o(.text+0x1d7): In function `nw_database::nw_database[not-in-charge]()':

...

So ein Mist, echt! Wäre super, wenn Ihr mir hier nochmal helfen könntet.

Gruß

Udo

FireBird2002
14.07.2004, 18:06
Kannst du das Makefile mal anhängen?

Darkheart
14.07.2004, 18:20
O.K., habe sie als ganz normale Text-Datei angehängt.

Ich bin jetzt kurz weg, aber es wär super, wenn Du Dir das mal anschauen könntest.

Schau dann später nochmal hier ins Board.

Gruß + Danke, danke, danke ;-))

Udo

jochen
15.07.2004, 10:46
...
CC = gcc -Xlinker,libmysql,libpcap

aber ich krieg das Project nach wie vor nicht compiliert. Hier nochmal ein Auszug aus den Fehlermeldungen, die ich bekomme:

...
*test -d ../bin/ || mkdir -p ../bin/
*g++ -o ../bin/nwarp nwarp.o nw_database.o nw_device.o nw_dev_storage.o nw_standarts.o -L/usr/lib/ -L/usr/lib/qt3/lib/ -L/usr/X11R6/lib/ -lqt -lXext -lX11 -lm
...


Hi,
so wie das aussieht sollstest du den Zusatz wohl eher an CXX anhängen, da ja g++ aufgerufen wird. Oder wohl noch passender an LIBS.

Probiers mal aus...

Gruß
Jochen

Darkheart
16.07.2004, 22:19
O.K.,

beide Varianten funktionieren auch nicht. Ich habe sowohl den Schalter an CXX angehängt, als auch direkt die Libs mit -L/usr/lib/libpcap.so eingebunden und die Fehlermeldungen kommen immer noch.
Vielleicht wechsel ich jetzt mal komplett auf die Kommandozeile und laß Kdevelop aussen vor. Eventuell funktionierts dann.

Gruß + Danke

Udo