Qt Exe starten ohne Qt-Creator



  • Hallo liebes Forum,
    und sorry wenn ich eine Anfängerfrage stelle, die möglicherweise schon 999x zufriedenstellend beantwortet wurde.
    Aber ich verzweifle fast. Wieso kriege ich meine erstellte Exe (ganz primitiv ein leeres Fenster) zwar in der Creator-Gui ausgeführt, nicht aber auf Windows-Ebene.
    Ich habe schon etwas gegoogelt (so 2 Stunden) und herausgefunden, in dem Verzeichnis fehlen 1 bis viele dll. Aber welche und woher kriege ich die?
    Also was habe ich installiert: Creator Version 5.13.2 mit Mingw 32 und 64bit. Ich muß dazu sagen ich hatte vorher (weitere 2 Stunden vorher) mal die 5.14 probiert und "gierig" ALLES ausgewählt und dann entsprechend Lehrgeld bezahlt. Ok das ist aber restlos weg, ich habe auch einen anderen Pfad jetzt. Gefunden habe ich meine Exe in zwei Verzeichnissen, Debug und Release. Aber beide laufen so nicht. Er verlangt eine qt5core.dll, wenn ich ihm die ins Verzeichnis gebe, kommt eine Fehlermeldung irgendwas mit x0007b.
    Warum ist das so kompliziert??? Ich bin schon wieder kurz davor, entnervt aufzugeben und das ganze Projekt Qt sein zu lassen. Ich hatte mal ähnliche Probleme mit MS Visual C++ und Exen auf einem anderen Rechner - aber hier ist es sogar der gleiche Rechner und es geht nicht? Ich wollte das machen mit dem Ziel, plattformübergreifend Windows 7 und Linux Mint 19 einfache Anwendungen zu programmieren.
    Mit Lazarus ist mir das auch gelungen - Pascal ist sowieso "meine" Sprache - allerdings ist das auch schon bißchen her bei mir mit den Programmierkenntnissen, mache jetzt beruflich was anderes.
    Ich wollte Qt mal eine "Chance" geben, weil man nur Gutes hört. Aber wenn man nicht mal eine einfache Exe aufrufen kann?! Wie kann man das automatisieren, gibt es keinen Build oder Install wo alles drin wäre?
    Danke für Eure Hilfe und Nachsicht


  • Lifetime Qt Champion

    Hi @alfware,

    Das Stichwort ist "Deployment". Das ist kein Qt-Problem, noch nicht einmal ein Windows-Problem.

    Neben den Qt DLLs (Core, Gui, Widgets + Platform plugin) benötigst Du (unter Windows) auch noch die Compiler-Runtimes. Viele (aber nicht unbedingt alle) der Abhängigkeiten kann man mit Dependency Walker finden und beheben.

    Empfehlenswerte Links:

    Unter Creator funktioniert das übrigens deshalb, weil der PATH bei Ausführung verbogen wird. Neuere Creator Versionen erlauben auch ein Terminal mit Laufzeitumgebung zu öffnen, aus diesen kannst Du das Programm dann direkt ausführen.

    Warnung: Es nicht zu empfehlen, den globalen System-PATH zu verändern, das schlägt früher oder später zurück.

    Viel Erfolg!



  • Hallo aha_1980,

    erstmal vielen Dank für die Anregung. Letztlich läufts jetzt, für Windows 32 und 64bit (waren unterschiedliche DLLs). Irgendwo in der Beschreibung gabs da eine EXE (irgendwas mit deploy), die aber nicht die ganze Arbeit gemacht hat. Vielmehr bin ich dann mit trial+error ans Ziel gelangt. Erst die qt5core.dll gefunden und ins Verzeichnis gebracht, dann wollte er die die nächste usw bis ich alle hatte.

    Dummerweise für das "debug" Modell und das "release" Modell immer unterschiedliche und auch noch für 32 und 64 bit. Aber nun habe ich sie alle. Ein Test mit einem zweiten, etwas komplizierterem Programm: geht auch. Also so kann ich für meinen Anfängerbedarf arbeiten. Es wäre nur schön, wenn man irgendwo aufschreibt - diese 6 Dateien braucht man und laßt euch nicht von den kryptischen Namen verwirren.

    Und auch andere, große, seriöse Programme machen das so (ich habe es bei vielen meiner Lieblingsprogramme zum ersten Mal bewußt wahrgenommen, die bringen alle ihre eigene Qt-DLLs mit und alle Versionen sind verschieden...) Okay . Ist halt so.
    Auf einem anderen PC mußte ich dann noch ein platforms-Verzeichnis mit einer siebten DLL ergänzen, auch okay.

    ABER :-)

    Wie sieht denn das nun unter Linux (Mint also Ubuntu usw) aus? Qt-Creator habe ich letztlich installiert bekommen, war ein Krampf aber geht. Mein Beispielprogramm läuft, in der der IDE und auch draußen.
    Was aber anscheinend Probleme macht - wie krieg ich das denn einem "blanken" Linux verteilt, also wo noch nie Qt drauf war.
    Ich bin ein Linux-Anfänger und recht ängstlich diesbezüglich, daher mache ich alles in einer (frischen) VM unter Virtualbox.
    Erster Start 32bit: lief ohne weiteres - jedenfalls aus dem Terminal (Krusader nicht). Gab irgendeine GLI-Fehlermeldung, da fehlt irgendwas aber es lief ja.
    Zweiter Start 64bit: ja der will die erste .SO: /usr/lib/..../libqtcore.so.5.13 oder so.
    Habe ich nachgeschaut, sowas hat mein Qt (da wo ichs erstellt habe). Dummerweise hat der "blanke" PC als das Ziel auch schon sowas, aber Version 9. Wahrscheinlich hatte es oben bei 32bit zufällig grad gestimmt. Nun sind das aber 2? oder 3? Dateien/Links für so eine Datei. Wie man das macht, keine Ahnung. Bin ja Anfänger. Habe nur irgendwo gelesen, daß Linux die .SO ausgerechnet grade nicht im aktuellen Verzeichnis sucht oder erwartet.

    Kann man das nicht igendwie vereinfachen oder automatisieren? Ich will das ja gerne alles lernen, wie es richtig wäre - nur ist es bei Linux und Internet leider so: 1 Problem 100 Posts und 100 Lösungen und alle "könnte, sollte, müßte"...
    Habe zum Beispiel solche All-in-one Vorschläge wie APPIMAGE gefunden? Ja gut, außer daß ich es nicht verstehe - warum sind das 3rdparty-Angebote? Irgendwie müssen doch alle Entwickler mal Interesse daran haben, daß ihr Programm auf mehr als einem noch dazu ihrem eigene PC läuft??? Für mich ist das irgendwie das dringendste Problem und zugleich größte Mysterium, weil anscheinend sooooo viele Meinungen im Internet und keine läuft.

    Aber bevor nicht so eine einfache Frage wie die Weitergabe klar ist, brauche ich doch gar nicht anzufangen zu programmieren
    bzw das zu lernen? Was übersehe ich hier?



  • Nachtrag: Habe jetzt eine Lösung auch für Linux gefunden. War nur noch 3x komplizierter und nerviger als bei Windows.

    Generell würde ich mir wünschen, daß solche Aufgaben auch in eine IDE eingebunden werden. Daß man sagen könnte, das soll mein Zielsystem sein oder meine Zielsysteme und dann baut der Pakete. Sonst hört irgendwie die Unterstützung nach dem Compilieren der Anwendung schlagartig auf. Nicht alle haben ein Qt auf dem Rechner - die meisten inclusive mir haben sicher noch nie vorher davon gehört, daher sollte man doch auch ein Interesse daran haben, denen eine einfache Installation zu geben. Vorausgesetzt, man hat ein Interesse, daß irgendeiner das eigene Progi nutzt :-)


Log in to reply