Qt5 erstellte Programme außerhalb Qt's ausführen
Qt5 erstellte Programme außerhalb Qt's ausführen
Hallo Forum,
ich bin relativ neu in der Programmierwelt (mache eine Informatiker Ausbildung an einer Berufsschule).
Ich habe schon einige Programme mit QT geschrieben. Diese möchte ich nun gerne auch auf meinem Windows PC nutzen können.
Die Methode mit den DLLs in den Ausgabeordner der ".exe" Datei kenne ich schon. Sie funktionierte bis Qt 4.8 auch. Mit Qt5 nun nicht mehr. Aber egal.
Ich möchte die Programme gerne auch nutzen ohne die DLLs in jeden Ordner packen zu müssen und auch auf PCs die kein QT haben.
Gibt es da eine Möglichkeit?
Mit freundlichen Grüßen
D. Buchholz
ich bin relativ neu in der Programmierwelt (mache eine Informatiker Ausbildung an einer Berufsschule).
Ich habe schon einige Programme mit QT geschrieben. Diese möchte ich nun gerne auch auf meinem Windows PC nutzen können.
Die Methode mit den DLLs in den Ausgabeordner der ".exe" Datei kenne ich schon. Sie funktionierte bis Qt 4.8 auch. Mit Qt5 nun nicht mehr. Aber egal.
Ich möchte die Programme gerne auch nutzen ohne die DLLs in jeden Ordner packen zu müssen und auch auf PCs die kein QT haben.
Gibt es da eine Möglichkeit?
Mit freundlichen Grüßen
D. Buchholz
MfG D.Buchholz
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Die Bibiotheken (DLLs) müssen in den selben Ordner wie die Application (EXE), anderst gehts nicht.
Außer du hast ne Lizenz um das ganze auch statisch zu verwenden.
Ab Qt5 sind viele neue Abhängigkeiten dazugekommen. Diese Bibliotheken müssen auch der application bekannt sein.
Der Grund warum die Anwendung nicht startet ist wahrscheinlich das diese die Platform Bibliothek (je nach System unterschiedlich eg. qwindows.dll für Windows) nicht findet.
Diese müssen sich in einem Unterordner Namens platform(s) neben der EXE befinden.
Außer du hast ne Lizenz um das ganze auch statisch zu verwenden.
Ab Qt5 sind viele neue Abhängigkeiten dazugekommen. Diese Bibliotheken müssen auch der application bekannt sein.
Der Grund warum die Anwendung nicht startet ist wahrscheinlich das diese die Platform Bibliothek (je nach System unterschiedlich eg. qwindows.dll für Windows) nicht findet.
Diese müssen sich in einem Unterordner Namens platform(s) neben der EXE befinden.
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Vielen Dank für die schnelle Hilfe. Dann muss ich es wohl auf dem Weg der DLLs machen.
Habe alle geforderten DLLs drin inkl. dem platforms Ordner mit der qwindows.dll.
Bekomme aber diese Fehlermeldung: http://puu.sh/2KceI.png
MfG
D. Buchholz
Habe alle geforderten DLLs drin inkl. dem platforms Ordner mit der qwindows.dll.
Bekomme aber diese Fehlermeldung: http://puu.sh/2KceI.png
MfG
D. Buchholz
MfG D.Buchholz
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Dependency Walker ist dein Freund
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Den Dependency Walker habe ich mir mal geladen. Da muss ich jetzt die DLLs "durchleuchten" oder die mit Qt erstellte ".exe"?
[Edit]: Habe nun alle DLLs durchleuchtet und bekam bei fast jeder der DLLs diese Meldungen : http://puu.sh/2KCo9.png
Kann damit leider nicht viel anfangen.
MfG
D. Buchholz
[Edit]: Habe nun alle DLLs durchleuchtet und bekam bei fast jeder der DLLs diese Meldungen : http://puu.sh/2KCo9.png
Kann damit leider nicht viel anfangen.
MfG
D. Buchholz
MfG D.Buchholz
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Natürlich das Executable... und das kenn ich auch nicht -> google
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Selbes Ergebnis bei der exe. Beim ersten Fehler (=At least one module has an unresolved import due to a missing export function in an implicitly dependent module.) Sagen mehrere Windows Foren einfach ignorieren. Funktioniert trotzdem.
Beim zweiten Fehler (=: At least one delay-load dependency module was not found.) Finde ich nichts im Internet...
Ich kenne mich mit den Programm leider überhaupt nicht aus kann es was hiermit zu tun haben:
http://puu.sh/2KCII.png
Beim zweiten Fehler (=: At least one delay-load dependency module was not found.) Finde ich nichts im Internet...
Ich kenne mich mit den Programm leider überhaupt nicht aus kann es was hiermit zu tun haben:
http://puu.sh/2KCII.png
MfG D.Buchholz
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Compiler das Programm am besten als Release! Und füge alle Qt Relevanten Bibliotheken ohne dem d am Ende in den Ordner.
Diese Bildbibliotheken mit einem d (zb Qt5Cored.dll) am ende sind eigentlich nur zum Debugging gedacht.
Wenn du dein Programm in der IDE läuft (Release), dann versuch mal dich mit dem Dependency Walker an den Prozess (deiner EXE) anzuhängen (attach process)
und schau dann welche Dateien verwendet werden. (Hab Dependency Walker noch nie verwendet, aber ich denke das programm sollte das können)
Diese Bildbibliotheken mit einem d (zb Qt5Cored.dll) am ende sind eigentlich nur zum Debugging gedacht.
Wenn du dein Programm in der IDE läuft (Release), dann versuch mal dich mit dem Dependency Walker an den Prozess (deiner EXE) anzuhängen (attach process)
und schau dann welche Dateien verwendet werden. (Hab Dependency Walker noch nie verwendet, aber ich denke das programm sollte das können)
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Habe das Programm als release Compiliert und die DLLs zugepackt inkl. dem platform Ordner und der qWindows.dll. Dependecy Walker meldet bei der exe wieder die gleichen Fehler. Wie kann ich denn den DW an den Prozess hängen? Finde diese Funktion nirgens.
MfG D.Buchholz
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Müssen sie nicht - DLLs werden genau wie Executables über die PATH Variable gefunden.veeman hat geschrieben:Die Bibiotheken (DLLs) müssen in den selben Ordner wie die Application (EXE), anderst gehts nicht.
Uwe
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Über die PATH Variablen? Du meinst die Umgebungsvariablen von Windows oder? Wie füge ich diese denn dort ein`?
MfG D.Buchholz
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Kann mit denn einer erklären wie ich mit dem Dependence Walker umgehe? Also wie ich den z.B. an den Prozess der exe hänge...und das mit den PATH-Variablen bekomme ich so auch nicht hin.
MfG D.Buchholz
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Was willst Du bei Dependency Walker wissen? Er zeigt Dir an, welche Dlls (und demnach auch welche Qt-Dlls) Du für dein Programm benötigst. Und wie man die PATH-Variable einstellt sagt Dir sicher google auch wenn das hier definitiv nicht nötig ist...
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Müssen nicht, aber das ganze über PATH-Variable zu regeln würde ich nicht raten. Aus dem einfachen Grund das wenn man mehrere Qt-Anwendungen mit unterschiedlichen Versionen hat es da oftmals zu weiteren Problemen führt.Uwe hat geschrieben: Müssen sie nicht - DLLs werden genau wie Executables über die PATH Variable gefunden.
Wie man diese ändert (auf eigene gefahr): google oder youtube
Hab mal "Dependence Walker" mal ausprobiert, offensichtlich ist es nicht möglich sich da einfach so anzuhängen.
Deswegen hab ichs mal mit dem Process Explorer von Sysinternals gemacht (zu finden hier):

Zu sehen ist im Unteren Bereich welche DLLs geladen sind und von wo diese geladen sind. Die Qt-Bibliotheken sind da zB unter H:/... zu finden.
Um die obige Ansicht zu erhalten muss unter View->Lower Panal View->DLLs eingestellt werden und um den Pfad dann unten zu sehen muss mit der rechten Maustaste auf die Spalten geklickt werden->Select Columns und da unter DLL einfach noch Path auswählen.
Re: Qt5 erstellte Programme außerhalb Qt's ausführen
Habe mir das Programm mal geladen und geguckt welche DLLs das Programm braucht. Ich habe alle in dem Release Ordner drin. Bekomme immer noch den selben Fehler.
Die qWindows.dll ist im platform Ordner im Release Ordner.
Die qWindows.dll ist im platform Ordner im Release Ordner.
MfG D.Buchholz