QT statisch gelinkt benutzen

Alles rund um die Programmierung mit Qt
Antworten
nisa06
Beiträge: 11
Registriert: 22. Mai 2008 11:10

QT statisch gelinkt benutzen

Beitrag von nisa06 »

Hallo,

Ich habe vor QT (4.4.0, GPL Edition) statisch gelinkt zu verwenden und meine geschriebene QT Applikation als eine exe weiterzugeben.

hierzu habe ich wie unter http://doc.trolltech.com/4.4/deployment-windows.html beschrieben die QT nochmal statisch gebaut.

meine applikation wird unter visual 2003 erstellt und mit folgenden Projekt-Einstellungen (fuer Release):
C++/codeerstellung (Laufzeitbibliothek): Multithreaded (/MT)
Linker/Eingabe: qtmain.lib, qtgui4.lib, qtcore4.lib

das zeug uebersetzt und linkt fehlerfrei.
allerdings wird bei ausfuehrung der exe auf einem fremd-rechner (ohne QT) immer noch nach den qt-dlls verlangt (z.B. qtgui4.dll).

Dieses wollte ich aber durch obiges prozedere ja gerade nicht.

Weiss jemand ob das ueberhaupt geht und was ich falsch gemacht haben koennte!?!?
Oder fuehrt kein Weg vorbei dass ich fuer die GPL Version von QT stets die DLL's von Qt mitliefern muss!?

Vielen Dank.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Und in der .pro steht config += static ?
nisa06
Beiträge: 11
Registriert: 22. Mai 2008 11:10

hmm

Beitrag von nisa06 »

was fuer ne .pro datei !?!? ich uebersetze meinen eigenen quell-code mit visual 2003. der ganze make-prozess wird also nicht mit qmake per hand durchgefuehrt sondern eben ueber visual.

habe hier nen poste gefunden, der empfiehlt in der mkspec directory von QT die qmake.conf anzupassen.

habe ich gemacht und alles nochmal neu gebaut:
1. configure -static ...
2. nmake sub-src
(dauert ca. halbe stunde)
3. im eigenen projekt unter visual 2003 folgende Projekt-Einstellungen (fuer Release):
C++/codeerstellung (Laufzeitbibliothek): Multithreaded (/MT)

4. Alle uebersetzen lassen.

Diesmal bekomme ich aber komischerweise folgende Meldung vom Linker (die es vorher als ich eine nicht-statische QT verwendete) nicht kam:

moc_gui_mainWnd.obj : error LNK2001: Nichtaufgelöstes externes Symbol "public: static struct QMetaObject const QMainWindow::staticMetaObject" (?staticMetaObject@QMainWindow@@2UQMetaObject@@B)

das entsprechende moc-file wurde korrekt erstellt (ging ja vorher mit shared variante).
Und nun obiges. Was kann das sein!?!?

Vielen Dank.
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Finde ich komisch, wenn du qmake als "per Hand" bezeichnest. QMake ist sehr schnell (im Gegensatz zu so configure-Skripts oder auch cmake) und eben ideal für Qt-Programmierung. Außerdem gibt es komfortable GUI-Frontends.
GoaSkin
Beiträge: 103
Registriert: 13. Juni 2007 00:14
Wohnort: Darmstadt

Beitrag von GoaSkin »

Bei einer Übersetzung mit MinGW braucht man die Optionen:

-static -release -fast -no-exceptions

gut... auf -no-exceptions kommt es an. Dieser Parameter stellt sicher, daß wirklich keine DLLs benötigt werden, auch keine Microsoft-DLLs.

Du kannst QT übrigens mit G++/MinGW bauen und trotzdem Visual Studio zum Kompilieren eigener Projekte nutzen, da grundsätzlich alle IDE-Plugins gebaut werden.
Antworten