Seite 1 von 1
Problem mit undefined reference
Verfasst: 29. Januar 2011 14:08
von anno1988
Hallo zusammen,
ich habe da ein Problem mit der undefined reference Fehlermeldung und weiß nicht wo der Fehler liegen könnte.
Ich habe dazu 2 Testprojekte aufgesetzt, die beide auf den gleichen include path (externe lib) zugreifen und diese einbinden.
Das erste Projekt ist eine library und das 2. eine Konsolenprogramm.
Wenn ich die library compiliere funktioniert alles wunderbar, doch sobald ich das Konsolenprogramm compiliere bekomme ich immer die undefined reference Fehlermeldungen, obwohl ich die externe library genau gleich eingebunden habe.
hat da jemand eine Idee woran das liegen könnte?
Das testprojekt findet sich im Anhang
Verfasst: 29. Januar 2011 15:31
von Christian81
Und was fehlt genau?
Verfasst: 29. Januar 2011 15:49
von anno1988
Hier die Fehlermeldung:
Code: Alles auswählen
Führe Build-Schritte für Projekt app_test aus...
Starte "/usr/bin/make" clean -w
make: Gehe in Verzeichnis '/home/anno/Desktop/test0/test1/test2/test3/test4/app_test'
rm -f build/obj/main.o
rm -f *~ core *.core
make: Verlasse Verzeichnis '/home/anno/Desktop/test0/test1/test2/test3/test4/app_test'
Der Prozess "/usr/bin/make" wurde normal beendet.
Unveränderte Konfiguration, qmake-Schritt wird übersprungen.
Starte "/usr/bin/make" -w
make: Gehe in Verzeichnis '/home/anno/Desktop/test0/test1/test2/test3/test4/app_test'
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_SQL_LIB -DQT_XML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I../../../../../qxmpp_library/src -Ibuild/moc -o build/obj/main.o src/main.cpp
g++ -o lib_test build/obj/main.o -L/usr/lib -lQtSql -lQtXml -lQtNetwork -lQtCore -lpthread
build/obj/main.o: In function `main':
/home/anno/Desktop/test0/test1/test2/test3/test4/app_test/src/main.cpp:18: undefined reference to `QXmppStreamFeatures::QXmppStreamFeatures()'
build/obj/main.o: In function `~QXmppStreamFeatures':
/home/anno/Desktop/test0/test1/test2/test3/test4/app_test/../../../../../qxmpp_library/src/QXmppStreamFeatures.h:31: undefined reference to `vtable for QXmppStreamFeatures'
/home/anno/Desktop/test0/test1/test2/test3/test4/app_test/../../../../../qxmpp_library/src/QXmppStreamFeatures.h:31: undefined reference to `QXmppStanza::~QXmppStanza()'
/home/anno/Desktop/test0/test1/test2/test3/test4/app_test/../../../../../qxmpp_library/src/QXmppStreamFeatures.h:31: undefined reference to `QXmppStanza::~QXmppStanza()'
collect2: ld returned 1 exit status
make: Verlasse Verzeichnis '/home/anno/Desktop/test0/test1/test2/test3/test4/app_test'
make: *** [lib_test] Fehler 1
Der Prozess "/usr/bin/make" wurde mit dem Rückgabewert %2 beendet.
Fehler beim Erstellen des Projekts app_test(Ziel: Desktop)
Bei der Ausführung von Build-Schritt 'Make'
Im Anhang nochmal als Bild.
Verfasst: 29. Januar 2011 16:03
von Christian81
Du linkst Dein Executable nicht gegen die Library - also fehlen demnach auch die Funktionen aus der Library.
Verfasst: 29. Januar 2011 16:09
von anno1988
Naja, also die externe library liegt ja als Quellcode vor und ich binde eben die Dateien ein die ich hier brauche.
Ja ok, ich denke ich muss einfach noch die source files mit in das Projekt aufnehmen.
Verfasst: 29. Januar 2011 16:15
von Christian81
http://doc.trolltech.com/4.7/qmake-vari ... .html#libs
Nur weil man einen Header für den Compiler einbindet heisst das nicht dass man dem Linker nicht sagen muss gegen welche Libraries er linken soll... C++ Grundlagen