Evgenii Legotckoi
Наурыз 7, 2016, 9: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

Бейне оқулық

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

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

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


For windeployqt there is the option --qmldir .

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


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

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

А
  • Шілде 9, 2022, 10: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-файл)? Заранее спасибо

Пікірлер

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