При запуске своего приложения в Qt (Qt Creator) в OS Windows, все работает отлично. Однако, скомпилированная release-версия программы почему-то отказывается запускаться, выдавая сообщения о не найденных dll-файлах. Это плата за кроссплатформенность Qt. Вместе со своей программой необходимо распространять и файлы Qt-библиотек.
Разберемся на примере, что это за файлы и что с ними делать.
- Запустим Qt Creator, создадим проект «Приложение Qt Widgets» с названием «Test» в папке «D:\»;
- В качестве системы сборки выбираем QMake или CMake. Для простейших программ лучше подойдет QMake;
- Выберем комплект «Desktop Qt 5.14.1 MinGW 64-bit». Для 32-bit все будет аналогично;
- Переключим конфигурацию развертывания в режим «Выпуск» (release) и соберем (запустим) проект.
Запустится пустое окно программы.
Переходим в автоматически созданную папку «D:\build-Test-Desktop_Qt_5_14_1_MinGW_64_bit-Release», в которой находится файл программы «Test.exe». При попытке его запуска появятся следующие сообщения об ошибках:
Запуск программы невозможен, так как на компьютере отсутствует Qt5Core.dll. Попробуйте переустановить программу.
Запуск программы невозможен, так как на компьютере отсутствует libgcc_s_seh-1.dll. Попробуйте переустановить программу.
Запуск программы невозможен, так как на компьютере отсутствует libwinpthread-1.dll. Попробуйте переустановить программу.
Запуск программы невозможен, так как на компьютере отсутствует libstdc++-6.dll. Попробуйте переустановить программу.
Запуск программы невозможен, так как на компьютере отсутствует Qt5Widgets.dll. Попробуйте переустановить программу.
Запуск программы невозможен, так как на компьютере отсутствует Qt5Gui.dll. Попробуйте переустановить программу.
Данные проблемы "лечатся" копированием необходимых библиотек из папки «[диск]\Qt\5.14.1\mingw73_64\bin» в папку с файлом «Test.exe». В нашем случае «d:\build-Test-Desktop_Qt_5_14_1_MinGW_64_bit-Release\».
При дальнейшей попытке запуска приложения может появиться следующее сообщение об ошибке:
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Создаем в папке расположения «Test.exe» папку «platforms». В моем случае «d:\build-Test-Desktop_Qt_5_14_1_MinGW_64_bit-Release\platforms\». Копируем туда файл «[диск]\Qt\5.14.1\mingw73_64\plugins\platforms\qwindows.dll».
Вуаля! Работает.
Итак, кратко, с программой необходимо распространять:
Test\Test.exe
Test\Qt5Widgets.dll
Test\Qt5Gui.dll
Test\Qt5Core.dll
Test\libwinpthread-1.dll
Test\libstdc++-6.dll
Test\libgcc_s_seh-1.dll
Test\platforms\qwindows.dll
Дополнительно необходимо помнить, что при использовании каких-либо библиотек Qt, их так же необходимо подсовывать к своему исполняемому файлу. Но чаще всего, это библиотеки из папки «[диск]\Qt\5.14.1\mingw73_64\bin\», а их названия будут отображены в сообщениях об ошибке.
#qt