In einem der Qt-Tutorials wurde bereits gezeigt, wie alle im Projekt verwendeten DLL erstellt werden, um das Programm für die Verwendung auf anderen PCs mit OS vorzubereiten Windows , und jetzt schlage ich vor, dass Sie sich mit dem Dienstprogramm vertraut machen, das mit Qt geliefert wird. Dieses Dienstprogramm heißt windeployqt und ist eine Konsolenanwendung, die normalerweise mit den MinGW - oder MSVC. -Compilern geliefert wird.
Um windeployqt zu verwenden, müssen Sie es über die Konsole ausführen und den Pfad zur ausführbaren Datei der kompilierten Anwendung als Argument übergeben. Danach sammelt windeployqt alle notwendigen Bibliotheken in dem Ordner, in dem sich die ausführbare Datei befindet.
Das Dienstprogramm windeployqt befindet sich im Ordner bin , der sich wiederum im Ordner des Qt-Compilers befindet. Der Ordnerpfad könnte also lauten:
- für MinGW - C:\QT\5.5\mingw492_32\bin\windeployqt.exe
- für MSVC - C:\QT\5.5\msvc2013\bin\windeployqt.exe
Arbeiten mit windeployqt
Lassen Sie uns nun mit windeployqt arbeiten. Angenommen, Sie haben bereits eine kompilierte ausführbare Datei und müssen alle DLLs erstellen, die für die Funktion erforderlich sind. Dazu werden wir eine kleine Vorbereitung treffen und die ausführbare Datei in den zum Sammeln vorbereiteten Ordner übertragen. Ich verwende das EColor -Projekt zur Demonstration, das mit MinGW geschrieben wurde. Die ausführbare Datei des Projekts befindet sich im folgenden Pfad D:\EColor\EColor.exe.
Danach müssen Sie die Konsole öffnen ( * cmd * ) und zu dem Ordner mit windeployqt in der Konsole wechseln. Als nächstes führen Sie das Dienstprogramm aus, indem Sie ihm den Speicherort der ausführbaren Datei übergeben, wie in der gezeigt Abbildung unten.
Danach sammelt das Dienstprogramm alle DLLs, die für das Funktionieren der ausführbaren Datei erforderlich sind. Und so wird es aussehen.
Mögliche Fehler
Es ist auch erwähnenswert, dass nicht alles glatt genug gehen kann. Beispielsweise findet windeployqt, möglicherweise die gcc-Compiler-Bibliotheken nicht und gibt den folgenden Fehler aus:
Cannot find GCC installation directory. g++.exe must be in the system path.
Dies wird behoben, indem die Umgebungsvariablen auf den Pfad zum bin-Ordner gesetzt werden, der GCC und die entsprechenden Bibliotheken enthält.
Dazu gehen wir in folgende Richtung (Beispiel für * OS Windows 7 *):
Systemsteuerung / System / Erweiterte Systemeinstellungen / Umgebungsvariablen
Dann fügen wir die PATH-Variable zu den Systemvariablen hinzu, in die die Pfade zu GCC und seinen Bibliotheken geschrieben werden. Bei mir sah das so aus:
- Variablenname: PATH
- Variablenwert: D:\AndroidQT\QT\5.5\mingw492_32\bin;D:\AndroidQT\QT\Tools\mingw492_32\bin;%PATH%
Dann empfehle ich, den PC neu zu starten. Danach sollte der Fehler verschwinden und die entsprechenden Bibliotheken sollten in den Ordner mit der ausführbaren Datei gezogen werden.
Dateien, die möglicherweise nicht von windeployqt erstellt werden
Außerdem können einige Dateien nicht mit windeployqt erstellt werden, was eine Überlegung wert ist und die Anwendung vor der Veröffentlichung auf einem anderen PC getestet werden sollte.
Beim Erstellen von DLL für EColor hat windeployqt beispielsweise immer noch die folgenden Dateien übersprungen:
- LIBEAY32.dll
- MSVCP90.dll
- MSVCR90.dll
- MSVCR120.dll
- ssleay32.dll
Wenn das Projekt QML verwendet
UPD 19.11.2018 von alex_lip :
Wenn das Projekt QML verwendet, müssen Sie eine spezielle Direktive --qmldir hinzufügen
Diese Direktive muss angeben, woher die QML-Quellen zu bekommen sind
windeployqt --qmldir f:\myApp\sources f:\build-myApp\myApp.exe
Добавьте в статью, что если используется Qml следует делать так -
For windeployqt there is the option
--qmldir
.Спасибо, добавил
Тук-тук. Привет из прошлого! Не могли бы вы подробнее расказать о том, куда должна быть записана данная вставка "windeployqt --qmldir f:\myApp\sources f:\build-myApp\myApp.exe"? Я пробовал указать после пути распаковки .dll, но получаю ошибку.
f:\build-myApp\myApp.exe - это путь к .exe файлку, который я хочу открыть, я так понимаю, а первый что означает (f:\myApp\sources)? Это папка с релизом проекта или это папка с самим проектом (там где .pro-файл)? Заранее спасибо