Qt Widget Projekt portabel machen



  • Nein, muss es nicht. Die einzigen Informationen, die in der Dll stecken, sind Namen der exportierten Funktionen. Das sagt aber z.B. noch nichts über Parameter. Wenn die Funktionen einen Zeiger erwartet, und du keinen übergibst, weiß sie nichts davon und tut so, als ob du einen übergeben hättest und greift auf zufälligen Speicher zu.
    Die Dlls müssen schon genau zu dem Stand passen, mit dem du gebaut hast.



  • Es lag an den x64 x32 Versionen. Ich habe jetzt alle x32 runtergeladen und in den Ordner kopiert.
    Musste dann sogar noch mehr DLLs runterladen.
    Jetzt kommen aber andere Fehlermeldungen:
    Der Prozedureneinsprungpunkt ... Qt5Guid.dll wurde nicht gefunden.
    Der Prozedureneinsprungpunkt ... Qt5Widgetsd.dll wurde nicht gefunden.



  • Erwartest du jetzt nochmal eine Antwort? Immer noch, das heißt, dass das nicht zu dem Stand passt, gegen den du gebaut hast.



  • Warum benutzt du nicht die DLLs von dem Entwicklungsrechner?



  • @theAnfänger77 sagte in Qt Widget Projekt portabel machen:

    Es lag an den x64 x32 Versionen. Ich habe jetzt alle x32 runtergeladen und in den Ordner kopiert.
    Musste dann sogar noch mehr DLLs runterladen.
    Jetzt kommen aber andere Fehlermeldungen:
    Der Prozedureneinsprungpunkt ... Qt5Guid.dll wurde nicht gefunden.
    Der Prozedureneinsprungpunkt ... Qt5Widgetsd.dll wurde nicht gefunden.

    Hast du eine Debug-Version gebaut?

    Die Debug-DLLs von QT enden immer auf 'd'. Darauf solltest du achten. Wenn du eine Exe ausliefern/anderswo nutzen willst, solltest du eine Releaseversion bauen und dann aus dem Verzeichnis deiner QT-Installation die passenden DLLs (ohne 'd' am Ende ) raussuchen.

    Darüber hinaus musst du nie DLLs runterladen. Die sind alle in deiner QT-Installation vorhanden.



  • Vielen Dank für die Antworten. Jetzt habe ich eine Release-Version gebaut und mir genau die
    passenden DLLs aus der Installation geholt und in den Ordner kopiert, wo die exe Datei ist.
    Das Programm startet allerdings immer noch nicht.
    Jetzt kommt noch nicht einmal mehr eine Meldung.



  • Das könnte jetzt aber einfach ein Fehler von dir sein. Kannst du das aus dem Debugger heraus starten? Dann solltest du sehen, was schiefgeht.



  • Im Qt Creator lässt sich eine Debug Version ohne Probleme starten.
    Eine Release Version jedoch nicht. Die Fehlermeldung lautet einfach nur:
    Das Programm ist abgestürzt.



  • @theAnfänger77 sagte in Qt Widget Projekt portabel machen:

    Im Qt Creator lässt sich eine Debug Version ohne Probleme starten.
    Eine Release Version jedoch nicht. Die Fehlermeldung lautet einfach nur:
    Das Programm ist abgestürzt.

    In dem Fall solltest du das Problem so lange reduzieren, bis du den Fehler eingekreist hast. Klingt danach, als würdest du irgendwo auf Speicher zugreifen, der dir nicht (mehr) gehört.

    Mir hilft es dann immer wenn ich mit Assertions arbeite und alle möglichen Fälle in allen kritischen Funktionen abprüfe.

    Als Beispiel:

    void meineWichtigeFunktion( int a, int b )
    {
        assert( a >= 0 );
        assert( b == 1 || b == 2 || b == 3 );
       ...
    }
    

    Somit stellst du sicher, dass Variablen nur Zustände haben, die du vorgesehen hast.



  • Du kannst auch in der Release-Version mit Debug-Infos kompilieren (schau mal in den Projektoptionen).


Log in to reply