Peinliche Qt Linkerfehler

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Alexander Kornrumpf
Moderator
Beiträge: 2113
Registriert: 25.02.2009, 13:37

Peinliche Qt Linkerfehler

Beitrag von Alexander Kornrumpf »

Hi!

Traue mich schon fast gar nicht mit so einem dämlichen Problem hier zu fragen.

Ich habe hier eine Open Source Qt anwendung, die mit eigenen .pro dateien kam. Ich verwende qmake und mingw32-make (und Qt Creator, aber das sollte keinen Einfluss haben). Ich bekomme ~5k Linkerfehler die ich so interpretiere, dass die Qt Libs selbst nicht gelinkt werden.

Code: Alles auswählen

/../../Qt/2010.02.1/qt/include/QtCore/../../src/corelib/tools/qstring.h:413: undefined reference to `_imp___ZN7QString16fromAscii_helperEPKci'

Was mir fehlt ist der Grund dafür. Es folgt eine Liste von Dingen die augenscheinlich nicht das Problem sind:

-Qt ist korrekt installiert, und die Pfade sind gesetzt. Ich kann eine simple Testanwendung (Qt Creator Beispiel) ohne Probleme bauen.
-Die Qt Libs habe ich (zur Sicherheit) selbst mit mit mingw32-make gebaut. Es sind definitiv keine VC++ libs (von der Endung .a ml ganz abgesehen). Die Libs scheinen sich untereinander zu verlinken (network gegen core z.B. und das verlief ohne Probleme)
-Compiler und Linkeraufrufe sehen richtig aus:
g++ -c -g -Wall -frtti -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT -DENABLE_IPV6 -DPREFIX="/usr" -DCURL_STATICLIB -D_WIN32_WINNT=0x0501 -DQT_NEEDS_QMAIN -DQT_THREAD_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -no_dead_strip_inits_and_terms -Wl,-subsystem,windows -mthreads -Wl -o debug\****.exe object_script.****.Debug -L"d:\lib\GnuTLS-2.9.9\lib" -L"d:\lib\libcurl-7.17.1\lib\" -L"d:\lib\zlib123" -L"d:\lib\boost_1_42_0\stage\lib" -L"d:\lib\SDL-1.2.14\lib" -L"d:\lib\SDL_mixer-1.2.11\lib" -L"Debug\lib" -L"Release\lib" -L"d:\Qt\2010.02.1\qt\lib" -lmingw32 -lqtmaind obj\****_res.o -l*****_lib -lgnutls-openssl -lgnutls -lgcrypt -ltasn1 -lgpg-error -lcurl -lz -llibboost_thread-mgw44-mt -llibboost_filesystem-mgw44-mt -llibboost_regex-mgw44-mt -llibboost_system-mgw44-mt -llibboost_iostreams-mgw44-mt -llibboost_zlib-mgw44-mt -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lole32 -luuid -luser32 -lmsimg32 -lshell32 -lkernel32 -lmswsock -lws2_32 -ladvapi32 -lsdl -lsdlmain -lsdl_mixer -lwldap32 -lqjpeg4d -lqgif4d -lQtGuid4 -lQtCored4
Ich könnte mir vorstellen (anhand der Kommentare im Projekt) dass die Anwendung erwartet gegen eine statische Version von Qt gelinkt zu werden. Allerdings kann ich mir nicht vorstellen warum, oder was ich tun muss um das zu ändern. Vielleicht offenbare ich hiermit unwissen, aber aus sicht der Anwendung müsste es doch egal sein, ob die statischen libs wirklich libs sind oder Platzhalter für dlls.

Bitte sag mir jemand dass ich nur vergessen habe eine ganz wichtige Bib zu linken oder irgendeine Option verhauen habe, und gerade vor lauter Bäumen den Wald nicht sehe. Kann mir den Fehler nun wirklich nicht mehr erklären.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4855
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Peinliche Qt Linkerfehler

Beitrag von Schrompf »

Ich sehe gerade nicht, was hier schiefgehen könnte. Bei mir hat QtCreator immer saubere Projektdateien erzeugt, die sich dann von da aus auch stressfrei übersetzen ließen. Wenn das Visual Studio wär, hätte ich spontan auf abweichende Runtimes getippt... aber der GCC hat sowas gar nicht. Daran kanns also nicht liegen.

Ich bin ratlos. Pack doch einfach Deine Sourcen in ein funktionierendes QtCreator-Projekt und nimm das.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
SPech
Moderator
Beiträge: 63
Registriert: 07.03.2002, 17:12
Echter Name: Sebastian Pech
Kontaktdaten:

Re: Peinliche Qt Linkerfehler

Beitrag von SPech »

Hast du mal versucht gegen die installieren QT Libs zu bauen anstatt gegen die selbstgebauten?
SPech.de - Meine Projekte: AirTaxi, Adberion, WOW Reborn
Alexander Kornrumpf
Moderator
Beiträge: 2113
Registriert: 25.02.2009, 13:37

Re: Peinliche Qt Linkerfehler

Beitrag von Alexander Kornrumpf »

Ja davor.

Dann hab ich sie selbst gebaut als ersteres nicht klappte.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Peinliche Qt Linkerfehler

Beitrag von Chromanoid »

Du könntest dein Projekt mal mit Netbeans öffnen. Soweit ich gelesen hab ist die QT Unterstützung dort recht ausgebaut...
http://netbeans.org/kb/docs/cnd/qt-applications.html
netbeans generiert meinen erfahrungen nach immer gute make-files usw., die du dann mal mit deinen vergleichen könntest....
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Peinliche Qt Linkerfehler

Beitrag von kimmi »

Hat du in den Libs schon mal nach dem Symbol gesucht ( nm )? Und ich habe auch mal gesucht und das hier gefunden, was ich allerdings selber nicht gelesen habe:
http://www.eisboden.de/2007/04/15/eclip ... s-und-cdt/

Gruß Kimmi

P.S.: Linkfehler sind nicht peinlich, sondern böse ;)...
Alexander Kornrumpf
Moderator
Beiträge: 2113
Registriert: 25.02.2009, 13:37

Re: Peinliche Qt Linkerfehler

Beitrag von Alexander Kornrumpf »

Danke für die Tipps. Ich muss mich jetzt erstmal um andere Dinge kümmern, aber ich werde es sicherlich bei gelegenheit ausprobieren.
Benutzeravatar
SPech
Moderator
Beiträge: 63
Registriert: 07.03.2002, 17:12
Echter Name: Sebastian Pech
Kontaktdaten:

Re: Peinliche Qt Linkerfehler

Beitrag von SPech »

Ansonsten die Profiles von der QT IDE generieren lassen.
SPech.de - Meine Projekte: AirTaxi, Adberion, WOW Reborn
Antworten