Приложение, развернутое с библиотеками QT5, не запускается в Windows 7
Недавно мы перенесли наше приложение на основе QT в Windows с QT 4.8 до QT 5, и у нас возникла проблема с развертыванием. Обратите внимание, что наше приложение не изменилось, мы только построили его с новой картой QT5. С некоторыми усилиями мы получили его для сборки с библиотекой QT5 на основе VS2010; и я успешно запускаю приложение от Qt Creator.
Как и в случае с QT4, мы включили требуемый набор библиотек QT с установщиком.
На нашем этапе тестирования, когда мы установили наше приложение QT5 на чистой машине; это не началось бы. Не только приложение не запустилось, но оно не выдало никаких ошибок.
Мы запустили приложение через проверку зависимостей; и вообще не было недостающих библиотечных зависимостей.
Ответы
Ответ 1
После нескольких дней поиска без какого-либо прогресса мы наткнулись на ошибку QT:
https://bugreports.qt.io/browse/QTBUG-28766
В QT5 помимо ожидаемых QT-библиотек, msvcr100.dll и msvcp100.dll; оказывается, что вы должны отправить свое приложение с помощью:
platforms/qminimal.dll
platforms/qwindows.dll
. Что находится в вашей локальной библиотеке QT5, установите @:\Qt5.0.0\5.0.0\msvc2010\plugins\platform
Я искал везде, и я не смог найти эту информацию в своей документации.
Ответ 2
Мне нужно запустить автономное приложение "Hello World" (Qt sdk 5.0.1 mingw, Win7 x64). Мне нужно добавить следующие файлы в программу dir:
- платформы /qwindows.dll
- D3DCompiler_43.dll
- icudt49.dll
- icuin49.dll
- icuuc49.dll
- libEGL.dll
- libgcc_s_sjlj-1.dll
- libGLESv2.dll
- libstdС++ - 6.dll
- libwinpthread-1.dll
- Qt5Core.dll
- Qt5Gui.dll
- Qt5Widgets.dll
Полная информация о развертывании для окон, доступных в qt 5.5 doc
Ответ 3
Лучшим выбором является использование: windeployqt.exe. Этот инструмент разрешает все зависимости вашего приложения .exe.
Ответ 4
Да, хорошо видно. У меня были проблемы с развертыванием, используя
qt 5.0.2.
Аналогично установленной папке платформ с этими двумя DLL в приложениях
папке, а развертывания на Vista и Win7 теперь работают.
Подходчик не помогает здесь, поскольку он не
уведомлять qwindows.dll или qminimal.dll как необходимые DLL.
Платформы dll в моей установке Qt находятся в
\ Qt\5.0.2\mingw47_32\Plugins\платформы.
Ответ 5
Плагины платформы Qt находятся в папке "plugins" в "qtbase": C:\Qt\5.0.0\qtbase\Plugins\платформы
Ответ 6
для учебника ноты, на win7 и qt5.1.1
шаги развертывания:
* change build mode to release, not debug,
* build,
* create a output folder somewhere
e.g. desktop/notepad/
*
* copy file to output folder
file list:
* from "workspace_home/build-notepad-xxx-Release/release"
* notepad.exe
* from "qt_home/5.1.1/msvc2010/bin"
* icudt51.dll
* icuin51.dll
* icuuc51.dll
* libEGL.dll
* libGLESv2.dll
* Qt5Core.dll
* Qt5Gui.dll
* Qt5Widgets.dll
*
* from "qt_home/5.1.1/msvc2010/plugins/platforms"
* platforms/ (need to create this sub folder in the output folder)
* qwindows.dll
*
*
*
* run the .exe file, make sure it works,
*
* ok
*
Ответ 7
Похоже, что пустой qt.conf, расположенный в том же каталоге, что и приложение, вызывает проблемы с запуском приложения Qt5 в Windows 7. Попробуйте удалить его.
Ответ 8
Я использовал экземпляр QMediaPlayer и QMediaPlaylist, и мое приложение больше не запускалось, что приводило к следующей ошибке: это приложение не запускалось, потому что оно не могло найти или загрузить плагин платформы Qt "windows". Повторная установка приложения может решить эту проблему.
Проведя 4 дня, пытаясь выяснить, что происходит, мы обнаружили, что в Qt5Core.dll имеется жесткий путь для загрузки плагинов, в частности файла wmfengine.dll
. Убедитесь, что вы компилируете Qt5Core, чтобы не иметь этот жесткий путь (:\Qt\5.5\msvc2010).
![screenshot of WinDiff]()
Жестко закодированный путь в Qt5Core.dll
с ошибкой плагина wmfengine.dll
для загрузки