QT Dll´s viel zu groß ?
-
Gute tag liebe com,
ich habe mir Qt5 auf meinem neuen Lappi installiert und ein kleines
Programm geschrieben. Danach habe ich wie gewohnt alle benötigten Dll´s in
meinem Programmordner kopiert, als ich sah das die Dll´s zusammen ein
Gesamtvolumen von ca. 300mb haben. Das kann doch nicht sein oder ? So viele Dinge sind von QT4 zu QT5 doch gar nicht dazu gekommen oder ?Mache ich irgendetwas Falsch ?
Danke schon mal vorher
-
Du musst nur die Release-DLLs nehmen, die Debug-DLLs kannst du weglassen.
Z.B. bei Qt4:
QtCore4.dll = Release (3 MB)
QtCored4.dll = Debug (44 MB)
-
Ok nach dem ich jetzt folgende Dll`s hinzugefügt habe:
icudt49.dll icuin49.dll icuuc49.dll libgcc_s_sjlj-1.dll libGLESv2.dll libstdc++6.dll libwinpthread-1.dll Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll
Kommt der Fehler, das der Prozesseinsprunpunkt in der Dll Qt5Core.dll nicht gefunden werden kann ?
-
Du musst dein Programm natürlich auch erst gegen die Release Libraries linken mit den entsprechenden non-debug Einstellungen.
-
was für einen Compiler (z.B. Visual Studio 2010 oder MinGW 4.4) nutzt du und wo hast du die DLLs her?
-
Als Compiler benutze ich MinGw(4.7)
Die QT-Dlls nehme ich aus: C:\Qt\Qt5.0.2\5.0.2\mingw47_32\bin
Und die anderen aus: C:\Qt\Qt5.0.2\Tools\MinGW\bin &
C:\Qt\Qt5.0.2\Tools\QtCreator\bin
-
hab dazu noch eine Frage
du schreibst du kopierst die dll von hand in deinen Ordner mit der exe
kann man dies nicht automatisch machen?
Bzw so bauen das er alles mit in die exe nimmt?
Ich erwarte eigentlich das er mir eine exe so zusammenstellt das ich sie auf einen anderen PC mitnehmen kann und sie da läuft.
Ist sowas machbar oder muss man immer die dll manuel mitschleppen?
danke für eure Hilfe
-
Statisch linken...
-
statisches Linken funktioniert doch über
LIBS +=
so kannn ich aber nur .lib files einbinden ?
ich will aber die QT5Cored.dll z.b. fest mit einbinden
-
Du solltest vielleicht mal ein Handbuch zu deinem Compiler/Linker lesen und wahrscheinlich auch einige C++ Tutorials zu dem Thema Bibliotheken, bevor wir hier weitermachen.
Das hier isn guter Anfang:
http://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/
-
das stimmt hast du ein gutes Handbuch zum Thema linker ?
ist es möglich die QT5Core.dll in eine statische Lib umzuwandeln ?
Damit ich das Programm auf jedem beliebigen Computer starten kann?
-
Dafür musst du dir die QT Sourcen runterladen und nochmal neubauen, um dein *.lib's zu erhalten, die du dann statisch dazulinken kannst.
- Runterladen: http://download.qt-project.org/official_releases/qt/5.1/5.1.1/single/qt-everywhere-opensource-src-5.1.1.zip
- Entpacken
- Terminal öffnen
- Dich in den Ordner qtBase hangeln
- configure.exe -static -debug-and-release -opensource -confirm-license -qt-zlib -qt-libpng -qt-libjpeg
- mingw32-make sub-src
Das kann dann mitunter paar Stunden dauern. Falls das alles klappt, erzähle ich dir, wie du QT-Creator und dein Projekte so umstellst, dass die statische QT-Version genommen wird.