Qt 4.4 vs MinGw
-
So... wollte neulich endlich mal damit anfangen, auch mal auf Windows zu programmieren... Folgt zwangsläufig, wenn man privat zu 95% Win nutzt.
Mein erster Anlauf war Visual C++ Express 2008. Also neben der aktuellen Qt-Version (4.4.0) auch das heruntergeladen.
Nachdem ich die ganzen env-Veriablen gesetzt hatte, hat Qt tatsächlich einwandfrei kompiliert und auch erste Testprogramme liefen anstandslos.
Allerdings hab ich recht schnell gemerkt, dass ich mit dieser IDE nicht wirklich glücklich werden kann
Also hab ich mal Code::Blocks versucht (soll ja auch so seine Anhänger haben). Die IDE war schonmal besser... Mitgeliefert war MinGW (make-version: GNU Make 3.81; gcc-version 3.4.5 (mingw-vista special)).
Allerdings bricht der erneute Kompiliervorgang von Qt damit ab:
./tmp\obj\debug_shared\qfsfileengine_win.o: In function `_Z8readLinkRK7QString': D:/Qt/4.4.0/src/corelib/io/qfsfileengine_win.cpp:1448: undefined reference to `_CoCreateInstance@20' D:/Qt/4.4.0/src/corelib/io/qfsfileengine_win.cpp:1448: undefined reference to `_CoInitialize@4' D:/Qt/4.4.0/src/corelib/io/qfsfileengine_win.cpp:1448: undefined reference to `_CoCreateInstance@20' [...] geht noch paarmal so weiter [...] D:/Qt/4.4.0/src/corelib/io/qfsfileengine_win.cpp:1555: undefined reCreating library file: d:\Qt\4.4.0\lib\libQtCored4.a ference to `_CoUninitialize@0' ./tmp\obj\debug_shared\quuid.o: In function `_ZN5QUuid10createUuidEv': D:/Qt/4.4.0/src/corelib/plugin/quuid.cpp:421: undefined reference to `_CoCreateGuid@4' ./tmp\obj\debug_shared\qeventdispatcher_win.o: In function `_ZN28QEventDispatcherWin32Private16doWsaAsyncSelectEi': D:/Qt/4.4.0/src/corelib/kernel/qeventdispatcher_win.cpp:625: undefined reference to `_WSAAsyncSelect@16' collect2: ld returned 1 exit status make[2]: *** [..\..\lib\QtCored4.dll] Error 1 make[2]: Leaving directory `D:/Qt/4.4.0/src/corelib' make[1]: *** [debug-all] Error 2 make[1]: Leaving directory `D:/Qt/4.4.0/src/corelib' make: *** [sub-corelib-make_default-ordered] Error 2
Google hat nicht wirklich was gebracht...
also hab ich eine andere gcc-Version versucht (4.2.1-dw2 (mingw32-2))
aber hier kommt folgender Fehler:
./tmp\obj\release_shared\qbytearray.o:qbytearray.cpp:(.text+0x20aa): undefined reference to `_compress2' ./tmp\obj\release_shared\qbytearray.o:qbytearray.cpp:(.text+0x454c): undefined reference to `_uncompress' collect2: ld returned 1 exit status make[2]: *** [..\..\..\bin\rcc.exe] Error 1 make[2]: Leaving directory `D:/Qt/4.4.0/src/tools/rcc' make[1]: *** [release] Error 2 make[1]: Leaving directory `D:/Qt/4.4.0/src/tools/rcc' make: *** [sub-rcc-make_default-ordered] Error 2
Auch die env-Variablen sind soweit gesetzt...
was läuft hier falsch? Ich bezweifle, dass es an Qt oder am Compiler liegt, aber sonst kann ich auch keine andere Fehlerquelle ausmachen
Falls ihr noch Infos braucht, sagt bescheid
-
Das sind Linkerfehler, dem Linker fehlen einige Bibliotheken.
Anhand der Funktionsnamen sind dies zumindest schonmal winsock32 und ole32, aber auch noch ein paar andere. Welche genau gebraucht werden, findest Du sicher in der Doku von QT.
Und wie Du diese dann in CodeBlocks dem Linker übergibst, findest Du in der Doku zu CodeBlocks.
-
so... nachdem ich jetzt ein paar Tage vergeblich versucht hab, das zum laufen zu bringen verzweifel ich fast endgültig -.-
besagte Bibliotheken werden bereits mitgelinkt
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared -Wl,--out-implib,d:\Qt\4.4.0\lib\libQtCored4.a -o ..\..\lib\QtCored4.dll object_script.QtCored.Debug -L"d:\Qt\4.4.0\lib" -L"d:\Microsoft DirectX SDK (March 2008)\Lib\x86" -L"c:\Program Files\Microsoft SDKs\Windows\v6.0A\lib" -L"c:\Program Files\SQLXML 4.0\bin\" -L"d:\CodeBlocks\MinGW\lib" -L"d:\Qt\4.4.0\lib" -L"d:\Qt\4.4.0\lib" -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 tmp\obj\debug_shared\QtCored_resource_res.o [...] ab hier dann das gleiche wie im ersten Codeausschnitt meines ersten Posts [...]
der untere Fehler aus meinem ersten Post ist zwar mittlerweile behoben, allerdings bleibts beim oberen.
Aus irgendeinem Grund verträgt er die libole32.a-Datei im MinGW-Verzeichnis nicht (sofern es überhaupt diese ist, die er verwendet)Code::Blocks ist übrigens zu dem Zeitpunkt noch nicht im Spiel
-
so... dieses Thema hat sich (hoffentlich) erledigt... weiter gehts hier -.-