Evgenii Legotckoi
Evgenii LegotckoiНаурыз 7, 2016, 10:52 Т.Ж.

Qt WinAPI - Сабақ 003. DLL файлдарын құру үшін windeployqt пайдалану

Qt оқулықтарының бірінде бағдарламаны * Windows операциялық жүйесі жұмыс істейтін басқа компьютерлерде пайдалануға дайындау үшін жобада пайдаланылған барлық DLL құру жолы көрсетілген. * , енді мен сізге Qt бірге келетін қызметтік бағдарламамен танысуды ұсынамын. Бұл утилита windeployqt деп аталады және әдетте MinGW немесе MSVC. компиляторларымен бірге келетін консольдік қолданба болып табылады.

windeployqt пайдалану үшін оны консольден аргумент ретінде құрастырылған орындалатын қолданбаға жолды жіберу керек. Осыдан кейін windeployqt барлық қажетті кітапханаларды орындалатын файл орналасқан қалтаға жинайды.

windeployqt утилитасы bin қалтасында, ол өз кезегінде Qt компилятор қалтасында орналасқан. Осылайша, қалта жолы болуы мүмкін:

  • MinGW үшін - C:\QT\5.5\mingw492_32\bin\windeployqt.exe
  • MSVC үшін - C:\QT\5.5\msvc2013\bin\windeployqt.exe

Windeployqt-пен жұмыс істеу

Енді windeployqt жұмысына кірісейік. Сізде құрастырылған орындалатын файл бар делік және оның жұмыс істеуі үшін барлық қажетті DLL файлдарын құрастыру керек. Ол үшін кішкене дайындық жасап, орындалатын файлды жинауға дайындалған папкаға тасымалдаймыз. Мен демонстрация үшін EColor жобасын пайдаланамын, ол MinGW. арқылы жазылған. Жобаның орындалатын файлы келесі D:\EColor\EColor.exe жолында орналасады.

Осыдан кейін консольді ашу керек ( * cmd * ) және консольде windeployqt бар қалтаға өту керек. Содан кейін қызметтік бағдарламаны орындалатын файлдың орнын беру арқылы іске қосыңыз. төмендегі сурет.

Осыдан кейін қызметтік бағдарлама орындалатын файлдың жұмыс істеуі үшін қажетті барлық DLL файлдарын жинайды. Және бұл келесідей болады.

Мүмкін қателер

Айта кету керек, бәрі жеткілікті түрде тегіс бола бермейді. Мысалы, windeployqt, gcc компилятор кітапханаларын таппай, келесі қатені жіберуі мүмкін:

Cannot find GCC installation directory. g++.exe must be in the system path.

Бұл ортаның айнымалы мәндерін GCC және сәйкес кітапханаларды қамтитын қалта қалтасының жолына орнату арқылы емделеді.

Мұны істеу үшін біз келесі бағытта жүреміз (мысалы * ОЖ Windows 7 *):

Басқару тақтасы / Жүйе / Қосымша жүйе параметрлері / Ортаның айнымалылары

Содан кейін жүйелік айнымалыларға PATH айнымалы мәнін қосамыз, онда GCC және оның кітапханаларының жолдары жазылады. Менің жағдайда бұл келесідей көрінді:

  • Айнымалы атауы: PATH
  • Айнымалы мән: D:\AndroidQT\QT\5.5\mingw492_32\bin;D:\AndroidQT\QT\Tools\mingw492_32\bin;%PATH%

Содан кейін компьютерді қайта іске қосуды ұсынамын. Осыдан кейін қате жойылып, сәйкес кітапханалар орындалатын файлы бар қалтаға шығарылуы керек.

Windeployqt арқылы салынбауы мүмкін файлдар

Сондай-ақ, кейбір файлдар windeployqt көмегімен жасалмауы мүмкін, бұл қолданбаны шығарар алдында басқа компьютерде қарастырып, сынаған жөн.

Мысалы, EColor үшін DLL құру кезінде, windeployqt әлі де келесі файлдарды өткізіп жіберді:

  • LIBEAY32.dll
  • MSVCP90.dll
  • MSVCR90.dll
  • MSVCR120.dll
  • ssleay32.dll

Егер жоба QML қолданса

UPD 19.11.2018 alex_lip :

Егер жоба QML қолданса, онда сізге --qmldir арнайы директивасын қосу керек

Бұл директива QML көздерін қайдан алуға болатынын көрсетуі керек

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

Бейне оқулық

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

alex_lip
  • Қар. 19, 2018, 7:32 Т.Ж.

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


For windeployqt there is the option --qmldir .

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


Evgenii Legotckoi
  • Қар. 19, 2018, 12:53 Т.Қ.

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

А
  • Шілде 9, 2022, 12:32 Т.Қ.
  • (өңделген)

Тук-тук. Привет из прошлого! Не могли бы вы подробнее расказать о том, куда должна быть записана данная вставка "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-файл)? Заранее спасибо

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз