Qt Programm kompiliert - Error MinG32 fehlt



  • Hallo,

    also ich habe ein kleines Tool auf meinem Desktop PC unter Windows XP in Qt4 und C++ mit dem Ming32 Compiler erzeugt. Auf dem System läuft es auch.

    Jetzt habe ich die .exe Datei auf meinen Laptop kopiert und ausgeführt, da läuft es nicht, da wird wegen eines fehlenden MinG32 Compilers gemeckert.

    Warum?



  • Sicher, daß ein fehlender Compiler angemeckert wird? Nicht doch eine mingw-.dll? Im MinGW-Installationsverzeichnis ist ein Verzeichnis bin, dort gibt es eine mingw-.dll, etwa 16 KB groß. Der genaue Name ist mir leider entfallen. Gibt aber nur diese eine. Die muß zusammen mit der *.exe kopiert werden, dann sollte das auch ohne komplett installierten MinGW funktionieren.

    Allerdings fehlen dann möglicherweise noch die QT-DLLs, es sei denn Du hast das Tool statisch kompiliert.



  • danke für die sache mit der mingwm10.dll heißt die mein ich, denn genau die wurde bei nem freund abgemeckert, dass die fehlt. Gibt es denn keine möglichkeit, die statisch zu binden, also standalone programme zu erzeugen?



  • Das mit der Mingw-Dll ist wohl so eine Sache. Als ich damals danach gesucht hatte, hieß es, daß die für Exceptions benötigt würde. Was ich gefunden habe, lief darauf hinaus, daß es wenn sehr aufwändig wäre, weswegen ich mich dazu entschlossen habe, diese DLL separat mitzuliefern. Einfach in das gleiche Verzeichnis wie die *.exe packen und gut ist es.



  • hm, sie wird aber auch schon ohne exceptions benötigt ;). Naja, is ja net die welt dass da die dll noch rumhängt, nur einzeldatei programme gehen dann iwie schlecht xD



  • vielen dank für die Antwort, werde ich mal testen.



  • So, ich habe es nun getestet. Das mit der Ming32 DLL Datei hat gestimmt, allerdings war das nicht die einzige DLL Datei die meinem simplen beta Editor gefehlt haben.

    Mein Tool fordert auch eine QtCored4.dll, QtGuid4.dll, etc.

    Diese Dateien sind einige MB groß. Also irgendwas mach ich wohl falsch.

    Ich kompiliere mein Programm erfolgreich auf einem PC, wo Ming32 und Qt4 installiert ist. Dann kopiere ich diese 2MB große EXE Datei auf ein Notebook ohne Ming32 und Qt. Dort kann es dann nicht ausgeführt werden.

    Wo kann mein Fehler liegen?


  • Mod

    Auch die DLLs musst du mitgeben, ebenso solltest du im Releasemodus kompilieren, da dies die Größe der DLLs und der exe verkleinert.



  • Wirklich? Ok dann hab ich wohl irgendwie die Sache noch nicht so richtig kapiert.

    Dachte bei so einem Mini Programm wie meinem, wäre schon alles in der EXE drin.

    Also ist es normal, dass ich alle geforderten DLLs mit kopieren muss, auch wenn das dann über 50 MB werden?

    Ist das bei allen Qt Programmen so?



  • Du hast auch noch die Möglichkeit das QT 4 zusätzlich statisch zu kompilieren und mußt dann Dein Projekt auch statisch kompilieren. Dann sparst Du Dir das mitgeben der QT4-DLLs. Die MinGW-DLL muß auch dann trotzdem mitgeliefert werden.
    Ansonsten hat phlox81 recht, wenn er sagt, Du solltest das Programm ohne Debug-Symbole kompilieren, bevor Du es weitergibst. Auf meinem Rechner habe ich QT 4.2.2 mit MinGW kompiliert und die DLLs für den Release haben folgende Größen:
    QtGui4.dll 7,5 MB
    QtCore4.dll 1,9 MB
    Im Gegensatz dazu die Größen der entsprechenden DLLs mit Debug-Symbolen:
    QtGuid4.dll 47 MB
    QtCored4.dll 14 MB

    Du hast natürlich auch die Möglichkeit einen Extra-Installer für die QT4-DLLs zu machen, der die DLLs (am besten die Release-Versionen) in das Windows System32-Verzeichnis kopiert. Dann brauchst Du die DLLs nur einmal auf den Rechner installieren, alle QT-Programme greifen dann auf diese globalen DLLs zu.



  • Super Infos, ich danke euch.


Anmelden zum Antworten