Развертывание приложения Qt C++ из Visual Studio qwindows.dll ошибка

Я искал решение этой проблемы, и хотя я нашел много людей, разделяющих мою проблему, ни одно из их решений не помогло мне.

Я написал приложение на C++ с использованием инфраструктуры Qt с использованием Visual Studio 2010. Я собрал и запустил приложение в режиме "Release" из Visual Studio без проблем, но когда я копирую этот exe-файл из папки Release в новое место назначения (притворяюсь, что это новый компьютер) он не запускается при наличии этой ошибки:

---------------------------
TestApplication
---------------------------
This application failed to start because it could not find or load the Qt platform plugin "windows".

Available platform plugins are: windows.

Reinstalling the application may fix this problem.

В каталоге исполняемого файла у меня есть следующая структура файла:
./TestApplication.exe
./libGLESv2.dll
./Qt5Core.dll
./Qt5Gui.dll
./QtWidgets.dll
./platforms/qwindows.dll
./qt.conf

Все dll-файлы были взяты из сборки 5.0.0 Qt в папке Qtbase, где находятся библиотеки.

Файл qt.conf:

[Paths]
Plugins=.

Без него ошибка запуска остается той же, за исключением того, что она говорит, что "минимальная" и "вне экрана" также доступны для платформ.

Для всех других людей, испытывающих эту ошибку, она, казалось, была решена путем создания platforms папку и положить в qwindows.dll. Но делать это самому не меняет никакого поведения.

Я что-то не так сделал? Возможно, мой метод генерации.exe в первую очередь неправильный?

2 ответа

Решение

Если вы используете libGLESv2.dll, то вы должны также включить libEGL.dll. Вы не можете видеть это в depen.exe, не знаю, как разработчикам Qt удалось это скрыть. Если ваш Qt из коробки, тогда оба Dll необходимы, даже если вы не используете OpenGL.

Кроме того, если ваш Qt из коробки, вам нужно также включить три ic*.dll, которые содержат информацию для обработки Unicode.

Вы можете увидеть, какие библиотеки DLL нужны, посмотрев, какие из них вызываются при запуске Debug (F5) в Qt Creator. = Карл

В выпуске, вероятно, отсутствует библиотека / плагин или библиотека находится в неправильном каталоге или из неправильного каталога.

Предполагаемый ответ Qt: используйте windeployqt.

Qt поставляется с консольными приложениями платформы, которые добавят все зависимости (включая такие, как qwindows.dll и libEGL.dll) в папку вашего развернутого исполняемого файла. Это предполагаемый способ развертывания вашего приложения, поэтому вы не пропустите ни одной библиотеки (что является основной проблемой для всех этих ответов). Приложение для Windows называется windeployqt. Скорее всего, для каждой ОС существует приложение консоли развертывания.

Другие вопросы по тегам