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.
QT statisch gelinkt benutzen
hmm
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.
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.
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.
-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.