Ausführen eines Qt Programmes

XxLuddixX

Cadet 1st Year
Registriert
Okt. 2009
Beiträge
11
Hallo zusammen,
ich bin zwar neu hier, hoffe aber doch, dass ihr mir helfen könnt ;)
Undzwar möchte ich mich nun in die Programmierung mit C++ und Qt einarbeiten.
Ich habe auch schon ein bisschen was hervorgebracht.
Zu meinem Problem: Ich kann das Programm mit dem Qtcreator kompilieren und starten.
Auch, wenn ich die *.exe auf den Desktop ziehe kann ich sie dort ausführen, wo es dann schon aufhört.
In jedem anderem Verzeichnis kommt die Fehlermeldung, dass die Anwendung nicht gestartet werden konnte,
weil die mingwm10.dll nicht gefunden wurde, was heißt, dass der
Pfad von Qt nicht gefunden wurde. Nun, das verwundert mich, weil ich C:\...\Qt\bin\ in meiner
PATH Variable angegeben habe und mit Qt erstellte Programme, die auf dem Desktop liegen
auch ausgeführt werden können :(

Ich hoffe, dass es irgendetwas banales ist, wo ich noch nicht drauf gekommen bin und, dass ihr mir helfen könnt :)
 
Das es auf dem Desktop geht wundert mich auch die mingwm10.dll liegt normalerweise im mingw/bin verzeichnis welches dann auch in der pfadvariable sein muss.

Wenn du das prgramm weitergeben möchtes muss in dem Ordner mit der exe die qt dlls und die mingwm.dll liegen.
 
Ah vielen Dank soweit,
explizit für dieses Programm müssen mingwm10.dll, QtCorde4.dll und QtGuid4.dll im selben Verzeichnis liegen, wie die *.exe
Ich denke spätere Nutzer werden kein Problem damit haben, die Paar dlls mitgeliefert zu bekommen, um das Programm aus zu führen.
Ich hatte schon befürchtet man hätte die gesamte Qt Bibliothek installieren müssen, wobei es somit viel moderater wird.
Wenn ich größere Projekte plane, werden dann die hinzukommenden dlls viel Speicherplatz benötigen?
Auch ist mir leider immernoch schleierhaft, warum die dlls nicht mit PATH gefunden wurden.
 
Die Debug Dlls sind riesig aber die Release haben wenige MB.

Mit QtCore und GtGui ist das meiste Zeug abgedeckt gibt dann noch neztwerk xml sql webkit usw.
 
Ich hab es immer normal kompiliert, wobei ich nur Daten im debug ordner des Projekts finde.
 
Zuletzt bearbeitet:
Alternativ zum "Beilegen" der dlls kannst du das Programm auch statisch linken. Dabei wird alles aus den Bibliotheken, das benötigt wird, in die exe eingebunden. Somit reicht es nur die exe auszuliefern.

Ganz interessant ist auch diese Seite: http://doc.trolltech.com/4.5/deployment.html
 
Zuletzt bearbeitet:
Um von debug auf release umzustellen muss man in die .pro datei

CONFIG+= release schreiben

Statisch linken ist bei Qt nur mit der Commerziellen Version möglich da dies die LGPL verbietet.
 
Jeder darf Qt statisch linken!
Nur muss bei der Open Source Version von Qt dann auch das selbst geschriebene Programm als Open Source frei gegeben werden.
 
Danke für die Antworten,
Die Paar Programme die ich mal mit Qt realisieren möchte werden dann sowieso unter GPL stehen,
daher würde ich gern wissen, wie man mit dem QtCreator die dlls statisch linken kann, da das noch einfacher ist, als die dlls mit zu geben.
Um von debug auf release umzustellen muss man in die .pro datei
CONFIG+= release schreiben
hat gut funktioniert.
Auch werden nun die Pfade aus PATH akzeptiert, wodurch das auch kein Problem mehr darstellt.
 
Das statische Linken ist nicht von der IDE sondern vom Compiler (eigentlich Linker) abhängig!

Gruß,

badday
 
Qt statisch zu Programm linken: CONFIG += static in der pro Datei.
Das setzt allerdings voraus, dass Qt selbst als statische Bibliothek erstellt wurde.
 
Das hat ebenso geklappt (warum bin ich nicht darauf gekommen?^^)
Nun ist das Programm 1.8 MB schwerer, was aber auch nicht allzuviel ausmacht:cool_alt:

Greetz
Luddi
 
Das hat die Datei von 1854 auf 447 KB sinken lassen.
Danke für die Empfehlung.
 
Musst du das überhaupt machen? Ich mein reicht es nicht als Release zu kompilieren?

Gruß,

badday
 
Je nach genutzten "Qt Funktionalitäten" sind statisch gelinkte Release-Builds mit mit mehren Megabytes absolut normal.
 
Denke auch so, und es hat auch nie jemand etwas anderes behauptet^^
Da steckt bereits eine Leistung von Qt selbst hinter, da die 3 dlls, die hier benötigt werden insgesamt schon knapp 90 mb haben.
Da frage ich mich, ob Qt erkannt hat, was aus den dlls genutzt wird und was nicht und somit
weniger Speicherpletz beim statischen linken braucht oder die dlls bereits komprimiert werden.

@badday
Wenn ich als release kompiliere werden immernoch die dlls benötigt :)
 
Zuletzt bearbeitet:
Zurück
Oben