Evgenii Legotckoi
Evgenii Legotckoi7. März 2016 10:52

Qt WinAPI - Lektion 003. Wie verwende ich windeployqt zum Sammeln aller DLLs?

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

Videoanleitung

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

alex_lip
  • 19. November 2018 07:32

Добавьте в статью, что если используется Qml следует делать так -


For windeployqt there is the option --qmldir .

windeployqt --qmldir f:\myApp\sources f:\build-myApp\myApp.exe


Evgenii Legotckoi
  • 19. November 2018 12:53

Спасибо, добавил

А
  • 9. Juli 2022 12:32
  • (bearbeitet)

Тук-тук. Привет из прошлого! Не могли бы вы подробнее расказать о том, куда должна быть записана данная вставка "windeployqt --qmldir f:\myApp\sources f:\build-myApp\myApp.exe"? Я пробовал указать после пути распаковки .dll, но получаю ошибку.

C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin>windeployqt.exe c:\p\untitled.exe windeployqt --qmldir ...

f:\build-myApp\myApp.exe - это путь к .exe файлку, который я хочу открыть, я так понимаю, а первый что означает (f:\myApp\sources)? Это папка с релизом проекта или это папка с самим проектом (там где .pro-файл)? Заранее спасибо

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken