statisches Binden mit Qt4.4 und MinGW

Verschiedenes zu Qt
Antworten
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

statisches Binden mit Qt4.4 und MinGW

Beitrag von Troll.Soft »

Hallo,

mein Projekt läuft mit Qt4.4 VC8 und dll's einwandfrei. Portierungen nach MinGW und Linux verliefen ebenfalls einwandfrei (nach einigem Ärger).

Nun soll alles statisch gelinkt werden und die Probleme gehen los.
Habe Qt4.4 erfolgreich im MinGW-Environment mit configure statisch erstellt, nur sql wollte nicht.

Das erste Beispiel aus dem Tutorial compiliert, aber will nicht linken. Es kommt zu folgenden Fehlermeldungen:
release/main.o(.text+0x61):main.cpp: undefined reference to `QApplication::QApplication(int&, char**, int)'

aufgerufen wird das Ganze mit:
mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `C:/Programme/Qt4.4/examples/tutorials/tutorial/t1'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release\t1.exe release/main.o -L"c:\Programme\Qt4.4\lib" -L"c:\Commands\MinGW\lib" -L"c:\Programme\qt4.4\lib\" -L"l:\mysql\lib\debug" -L"c:\Programme\Qt4.4\lib" -lmingw32 -lqtmain -lQtGui -lQtCore -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore4 -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
mingw32-make[1]: Leaving directory `C:/Programme/Qt4.4/examples/tutorials/tutorial/t1'

das .pro file sieht so aus
TEMPLATE = app
DESTDIR = release
OBJECTS_DIR = release
CONFIG += qt
CONFIG += warn_on
CONFIG += release
CONFIG += staticlib
CONFIG += create_prl
CONFIG += link_prl
SOURCES = main.cpp
TARGET = t1

In der Doku von QT fand sich nur staticlib, create_prl und link_prl als Anweisung für qmake. Offensichtlich reicht das nicht.
Hat jemand noch eine Idee oder einen Hinweis auf ein Tutorial.

vielen Dank im Voraus
Reinhold
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

Hast du denn die Qt-Libraries statisch erzeugt, sprich gibt es im Ordner "lib" solche ".a"-Dateien statt der dll's?

Gruß, Gérôme
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

Ja,
hatte ich gemacht. Habe nun noch was anderes gemacht. Und zwar das Ganze Trolltech-Zeugs unter Linux compiliert statt ein RPM zu benutzen. Im Vergleich zu Windows war das ein Traum, alles lief durch. War allerdings das neueste QT.4.4.1
Habe das auch für Windows runtergeladen. und neuesten C-Compiler von MS VC2008 dazu. Das Ganze compilierte zwei Stunden vor sich hin und erzeugte mehrere Gigabyte an Daten.
Aber Juchhu, das Tutorial t1 ließ sich statisch linken.
Werde also mein System bald statisch vor mir liegen haben.
187Proof
Beiträge: 5
Registriert: 12. Juli 2008 21:25

Beitrag von 187Proof »

Du musst das plugin Macro aufrufen.

also in deiner CPP

Q_IMPORT_PLUGIN(qsqlmysql)

und in der .pro datei

QTPLUGIN += qmysql


http://doc.trolltech.com/4.4/plugins-howto.html

Wenn du wieder nicht statisch compilieren willst, dann muss du dieses macro wieder auskommentieren (hat bei mir sonst nicht funktioniert)
Antworten