Qt Programm auf anderen Pc's

Alles rund um die Programmierung mit Qt
Antworten
ReasyEasyPeasy
Beiträge: 18
Registriert: 10. Juli 2015 15:47

Qt Programm auf anderen Pc's

Beitrag von ReasyEasyPeasy »

Moin,
ich möchte jetzt gerne mein kleines Programm, das im qt creater funktioniert, auch auf andren Pc's zum laufen bekommen. Das habe ich allerdings noch nicht ganz hin bekommen. Und hätte dazu auch noch ein paar kleine Fragen!

Ich habe in qt creator meine header source etc. Datein schön in Ordner sortiert. Warum werden diese Ordner, wenn ich beim qt-creator auf release stelle nicht auch erstellt. Wie kann da die Verlinkung überhaupt noch funktioniern?

Wenn ich die .exe ausführe sagt er mir, dass bestimmte .dll Dateien fehlen. Das habe ich soweit in den Griff bekommen und das Programm lief auf meinem Pc. Auf einem anderen ging es nicht. Was fehlt mir da noch?

Ich würde mich sehr freuen, wenn Jemand mir erklärt wie man da am besten vorgeht. Mehrere Anleitungen die ich mir schon angeguckt habe, verstehe ich leider nicht.
Liebe Grüße!
ak24
Beiträge: 7
Registriert: 1. August 2015 10:42

Re: Qt Programm auf anderen Pc's

Beitrag von ak24 »

Hallo,

als ich ein Qt Programm auf anderen Pc´s ausführen wollte wurde ich auch nach verschiedenen .dll-Dateien gefragt. Diese muss man diese von dem Ordner "C:\Qt\5.4\mingw491_32\bin" (oder andere, wo Qt gespeichert ist) in den release-Ordner im Dateiexplorer kopieren. Außerdem muss du den Ordner platforms aus "C:\Qt\5.4\mingw491_32\plugins" in den release-Ordner kopieren. Wenn du noch ein Icon in der Anwendung hast dann musst du auch aus "C:\Qt\5.4\mingw491_32\plugins" den Ordner imageformats in den release-Ordner hineinkopieren.
Warum die Ordner nicht im release angezeigt werden, das kann ich dir nicht sagen.
Ich hoffe ich konnte dir helfen.

Gruß
Aaron K.

P.S. Man muss bevor man die .dll-Dateien in den Ordner kopieren kann das Programm als release kompelieren
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: Qt Programm auf anderen Pc's

Beitrag von Fenriswolf »

hallo ReasyEasyPeasy,
wenn du herausfinden willst, welche DLL dir noch zu ausführung fehlen, empfehle ich dir das Programm Depency Walker.
das listet dir alle dateien auf, die zur ausführung benötigt werden. Alle erforderlichen DLLs müssen sich entweder im ordner der .EXE oder im system32-Ordner befinden.
(ACHTUNG: es kann sein, wenn du die dlls im exe-ordner hast noch unterordner erstellen musst - z.b. für die qwindows.dll, welche sich im unterordner "platforms" befinden muss!)
es müssen nicht alle datein aus allen möglichen ordnern (oder ganze ordner) kopiert werden. Liefere nur mit, was zur ausführung gebraucht wird! (alles andere ist sinnfrei)

Hoffe, ich konnte helfen.
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
ReasyEasyPeasy
Beiträge: 18
Registriert: 10. Juli 2015 15:47

Re: Qt Programm auf anderen Pc's

Beitrag von ReasyEasyPeasy »

Moin,
vielen Dank für die schnellen Antworten, sorry für mein spätest Antworten.
Das Programm depency walker kenne ich bereits und habe ich auch schon genutzt. Trotzdem Danke:). Mein Programm läuft auf meinem Rechner, wenn ich die .exe ausführe und walker sagt mir auch, dass alles vorhanden ist. Auf einem fremden Pc funktioniert es leider nicht. Deshalb habe ich den Qt-Ordner mit den Versionen 5.4 und 5.5 von meinem Pc auf den fremden Pc gepackt. Natürlich an die gleiche Stelle "C:\". Funktioniert immer noch nicht. Walker zeigt mir dann an, dass die msvcp120.dll fehlt. 'Das Programm selber sagt mir das gleiche, wenn ich die .exe ausführe. Ich finde diese dll allerdings gar nicht im Qt-Ordner.
Habt ihr da eine Idee? Und wieso ist es so "schwer" eine funktionierendes Programm zu bekommen. Wie macht ihr das denn. Könntet ihr vllt. mal Schritt für Schritt erklären wie ihr vorgeht bei eurem Programm?
Vielen Dank schon mal für die Antworten.
Liebe Grüße
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Qt Programm auf anderen Pc's

Beitrag von odt »

Ich nehme an, dass Du mit Visual Studio compilierst. Daher wird die benötigte dll auch eher in diesem Bereich (Pfad) angesiedelt sein. Auf http://doc.qt.io/qt-5/windows-deployment.html findest Du Details zum Deployment. windeployqt könnte Dir einige Arbeit abnehmen.

Grundsätzlich würde ich Dir folgendes Vorgehen empfehlen:
- setze in einer virtuellen Maschine ein Windows frisch auf
- ein Shell-Script (.sh oder .cmd) für die Packetierung
- Schritt für Schritt alle Abhängigkeiten kopieren bis es in der vm läuft.

Hier auszugsweise mein Packetierungs-Script, es läuft in einer Bash (msysgit) und basiert auf mingw. Evt. wären "heute" nicht mehr alle Schritte nötig (exe etc)

Code: Alles auswählen

rm -r $trgt
mkdir -p $trgt
cd $trgt
windeployqt --verbose 0 --compiler-runtime --dir $trgt --release $bld/release/${proj}.exe
cp $bld/release/${proj}.exe $trgt   
cp $QTB/libgcc_s_dw2-1.dll $trgt
cp $QTB/libwinpthread-1.dll $trgt
cp $QTB/libstdc++-6.dll $trgt
cp $QTB/Qt5Xml.dll $trgt
cp /c/OpenSSL-Win32/libeay32.dll $trgt
cp /c/OpenSSL-Win32/ssleay32.dll $trgt
/c/Program\ Files/7-Zip/7z.exe a $zip $proj
ODT Informatik GmbH, Reto Tschofenig
ReasyEasyPeasy
Beiträge: 18
Registriert: 10. Juli 2015 15:47

Re: Qt Programm auf anderen Pc's

Beitrag von ReasyEasyPeasy »

Moin,
ich benutze qt-creator. Muss ich die .dll trotzdem bei Visual Studio suchen?
Das mit der vm ist ein super Idee, die ich sobald ich wieder richtiges Internet habe, umsetzen werde. Ich bin kein Informatikstudent und habe dem entsprechend nicht so die Ahnung :( und bin vllt. auch ein bisschen schwer vom begriff :O. Deshalb hoffe ich, dass du mir noch ein paar dumme Nachfragen beantwortest :).
Schritt 1: Ich erstelle das Projekt im Qt-creator indem ich auf release stelle.
Schritt 2: Dateien wie Bilder muss ich extra in den Ordner kopieren aus meinem Qt-Projekt.(Gibt es eine Möglichkeit, den Ordner aufzuräumen? Z.B. .obj, .cpp und .dll Dateien in verschiedene Ordner? Oder macht man das nicht?)
Schritt 3: Packetierung mit Hilfe eines Scripts.
Was bedeutet Schritt 3 genau? Ich muss wissen, welche Dateien ich brauche z.B. mit Hilfe von walker und lasse diese mit dem Script in mein release-Ordner kopieren. Wozu dann das Script, wenn ich mir eh per "Hand" die richtigen Dateien raussuchen muss?
Liebe Grüße
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Qt Programm auf anderen Pc's

Beitrag von odt »

Qt-Creator kann sowohl mit mingw als auch dem ms compilieren. Daher ja, wenn Du Visual-Studio auf Deinem PC hast, dann könnte die dll dort liegen.
1: ja
2: hmm, in meiner Umgebung (aber eben mit mingw) ist die Build-Umgebung vom Source getrennt.
3a: das Script löscht zuerst das Ziel-Verzeichnis (damit das try&error immer sauber ist), erstellt das Ziel-Verzeichnis, ruft windeployqt auf, kopiert ein paar zusätzliche dll's und macht am Ende ein zip.
3b: weil sich diese Automatisierung spätestens dann lohnt, wenn Du Dein Programm in der zweiten Version packetieren (weitergeben) wirst. windeployqt hatte bei mir vor Jahren nicht alle Abhängigkeiten berücksichtigt, daher die zusätzlichen dll's kopieren. Hier kommst Du um Try&Error nicht herum, insbesondere da je nach Qt- und Compiler-Version jeweils leicht andere Abhängigkeiten bestehen. Das script ist unix-like, unter windows-cmd sind die Befehle natürlich anders (ohne Gewähr: deltree statt rm, copy statt cp).

Aber wenn es eine einmalige Geschichte ist, kannst Du die dll's natürlich auch mit der Maus kopieren. Den windeployqt wirst Du aber via cmd ausführen müssen, oder auch die nötigen qt-dll's und plugin's via Maus kopieren.
ODT Informatik GmbH, Reto Tschofenig
Antworten