Peinliche Qt Linkerfehler
Verfasst: 27.02.2010, 13:39
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.
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:
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.
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
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.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
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.