Seite 1 von 2

qt5concurent.dll usw

Verfasst: 12. Februar 2019 11:42
von DimitriJunker
Nochmal ein altes Problem, wie packt man ein mit QTCreator erzeugtes Programm zusammen damit es auf einem anderen Computer unter Windows läuft? Wenn ich das exe starte wird mir gemeldet, daß besagte dll fehlt, suche ich sie auf meinem PC und kopiere sie ins Verzeichnis bekomme ich einen Fehler 0xc00007b, also habe ich wohl eine 32bit dll mit einem 64bit exe gemischt. Google ich nach qt5concurent.dll und 64bit kommen alle möglichen Seiten aber keine die nach einer "offizilen" QT Seite aussieht. Das Tool Dependency Walker habe ich auch schon gefunden, hilft mir aber nicht dabei eine Quelle für die dlls zu finden. Muss man wirklich bei jeder neuen Version wieder alle dlls dazu packen oder kann man z.B. inno Setup Compiler o.ä. anweisen diese falls nötig aus dem www nachzuladen? Ach ja hier im Forum nach dll suchen funktioniert nicht, es sei ein zu häufiger Begriff.

Re: qt5concurent.dll usw

Verfasst: 12. Februar 2019 12:29
von helmut.jakoby
windeployqt.exe ?

Re: qt5concurent.dll usw

Verfasst: 13. Februar 2019 00:35
von DimitriJunker
Danke, aber das Resultat verwirrt mich jetzt, da sind Unmengen an Files die ich bisher nicht beigefügt habe. Ich hatte bisher mit einer älteren QT Version nur 32Bit erzeugt und damals irgendwie die nötigen dlls dazu kopiert. windeplayqt fügt mehr dlls bei, außerdem einen Ordner translations mit 21 qm Files, obwohl ich das Programm nur in Französisch und Englisch übersetzt habe, die Ordner bearer, iconengines und styles mit je einer dll,
imageformats mit 9 dlls für Bildformate die ich teils nicht kenne und sicher nicht nutze. Ist das wirklich alles nötig?
Kann QTCreator dieses windeplayqt nicht afrufen? Wenn nicht wäre dies wohl ein Verbesserungsvorschlag.
Die größte dll die windeplayqt hinzufügt ist opengl32sw mit 15MB, die hatte ich z.B. bisher nicht, und wenn ich sie umbenenne läuft das Programm trotzdem, im Dependency walker finde ich sie auch nicht,

Re: qt5concurent.dll usw

Verfasst: 13. Februar 2019 10:07
von veeman
Schau dir die Kommandozeilenbefehle von windeployqt an.

Für dich interssant:
--no-angle und --no-opengl-sw
Insofern du keine Hardwarebeschleunigung für Grafiken brauchst, insofern du kein OpenGL und Oder QGraphicsView verwendest wirst du dies nicht benötigen.

--no-webkit2
Wenn du kein Webkit aka. WebView verwendest, kannstdu dies auch setzen.

--no-plugins
Um die ganzen Bildformat DLLs nicht mit zu kopieren.

Ggf noch weitere optionen.

Leider ist es so, dass ab qt5 ziemlich viel überarbeitet wurde und man stärker auf externe Bibliotheken sowie Internationalisierung setzt, dadurch sind die Qt5 Deployement-Abhängigkeiten und der damit zussamenhängede Festplattenspeicherbedarf relativ groß.

Ansonsten solltest du alle QT DLLs in deinem install Ordner finden können.

Re: qt5concurent.dll usw

Verfasst: 13. Februar 2019 11:13
von DimitriJunker
Hallo,

da frage ich mich doch was windepoyqt sinnvolles macht. Ich hätte erwartet, daß es sich das Programm ansieht und dann nur das kopiert was gebraucht wird. Sonst könnte man ja auch einfach ein Zip anbieten das man dazupackt. Falls ich mich mal langweile sehe ich mir das genauer an, vieleicht programmier ich dann selber was;-) Aber bis dahin schonmal danke

Re: qt5concurent.dll usw

Verfasst: 13. Februar 2019 18:54
von Christian81
Das ist genau das was windeployqt auch macht - es schaut welche Dlls benötigt werden. Dazu schaut es auch was für Plugins benutzt werden (soweit dies möglich ist) und kopiert natürlich auch die Plugin-Dependencies - das siehst Du mit Dependency Walker nicht wenn Du nur das Executable scannst...

Re: qt5concurent.dll usw

Verfasst: 14. Februar 2019 12:39
von DimitriJunker
Hallo,

veeman schrieb das man durch --no einiges weglassen könne, wenn windeployqt nur das kopieren würde was man braucht könnte man doch nichts weglassen oder wo ist da mein Denkfehler?

Re: qt5concurent.dll usw

Verfasst: 14. Februar 2019 18:51
von Christian81
Angle ist eine Zwischenschicht für OpenGL - wenn man plain OpenGL verwenden will (oder eben gar kein OpenGL) dann kann man das weglassen. Das kann windeployqt nicht aus dem Executable herausfinden.
Plugins sind per se optional

Re: qt5concurent.dll usw

Verfasst: 15. Februar 2019 02:55
von DimitriJunker
Hallo,

wäre es dann nicht sinnvoller die pro-Datei zu analysieren statt der exe?
Andere Idee, statt die ganzen dlls in das Installationspaket zu packen könnte man doch auch windepoyqt beifügen und im Rahmen der Installation ausführen oder?

Re: qt5concurent.dll usw

Verfasst: 15. Februar 2019 07:33
von Christian81
Und was ist wenn mehrere exectables in einer pro-Datei/Hierarchie gebaut werden oder qmake gar nicht benutzt wird?

Re: qt5concurent.dll usw

Verfasst: 15. Februar 2019 11:48
von DimitriJunker
Wo ist da das Problem? Man kann jetzt auch einen Ordner angeben, da können auch mehrere exe drin sein. Es gäbe bei mehreren exe in einem Pro 2 Lösungen, entweder automatisch die Files für alle hinzufügen, oder den User fragen. Ideal wäre sowieso es dann in qtcreator zu integrieren, also beim Erstellen dies gleich miterledigen.
Und wer kein qmake nutzt kann ja immer noch die alte Variante nutzen, man muß ja nicht das alte entsorgen wenn man was neues einführt

Re: qt5concurent.dll usw

Verfasst: 15. März 2019 02:53
von DimitriJunker
Mit dem ersten Programm funktioniert es jetzt, aber bei einem andern bekomme ich diese Fehlermeldung:
---------------------------
DyjTrack.exe - Systemfehler
---------------------------
Die Ausführung des Codes kann nicht fortgesetzt werden, da libgcc_s_dw2-1.dll nicht gefunden wurde. Durch eine Neuinstallation des Programms kann das Problem möglicherweise behoben werden.
---------------------------
OK
---------------------------
Es fehlt also trotz windeployqt noch eine dll, nämlich libgcc_s_dw2-1 vorhanden ist: libgcc_s_seh-1hat da windeployqt die falsche dll angefügt? Und jetzt?

Re: qt5concurent.dll usw

Verfasst: 15. März 2019 07:31
von Christian81
Die andere mal mit kopieren und ggf. einen Bugreport schreiben wenn es wirklich der Fall sein sollte.

Re: qt5concurent.dll usw

Verfasst: 15. März 2019 12:38
von DimitriJunker
Hallo, ich habe die dll aus C:\Qt\5.11.3\mingw53_32\bin kopiert und der Fehler ist weg, aber dafür erhalte ich jetzt:
---------------------------
dyjtrack.exe - Anwendungsfehler
---------------------------
Die Anwendung konnte nicht korrekt gestartet werden (0xc000007b). Klicken Sie auf "OK", um die Anwendung zu schließen.
---------------------------
OK
---------------------------
Soweit ich den Fehler kenne tritt er auf wenn man 32 Bit Exe mit 64Bit dll mischt oder umgekehrt, also habe ich nach https://sourceforge.net/p/mingw-w64/dis ... /339d3607/ die exe und alle dlls getestet, und da waren wirklich 3 64Bit dlls: libgcc_s_seh-1hat, libstdc++-6 und libwinpthread-1 aber auch als ich die 3 gelöscht hatte bekam ich den Fehler immer noch, erst nachdem ich die beiden letzteren durch die Versionen aus C:\Qt\5.11.3\mingw53_32\bin ersetzte kann ich das Programm starten. Also für den Augenblick OK, aber ich muss das mal ganz genau eruieren und dann schauen wo ich den Bugreport poste. Danke soweit

Re: qt5concurent.dll usw

Verfasst: 18. März 2019 12:57
von DimitriJunker
Falls jemand den bugreport verfolgen will: https://bugreports.qt.io/browse/QTBUG-74482