我制作 Windows 应用程序。当我在安装了 QT 的本地计算机上运行它时 - 一切正常。
但是当我在另一台 W10 PC 或 W28R2 服务器上运行它时,出现已知错误。
This application failed to start because it could not find or load the Qt platform plugin "Windows" Available platform plugins are: "windows"
我阅读了所有关于此的主题,但没有找到解决方案。
我失败的步骤
- 将 libEGL.dll 复制到 myapp 目录中
- 将 libEGLSv2.dll 复制到 myapp 目录
- 将 qwindows.dll 插入 myapp 目录
- 将所有 dll 插入 :-) 到 myapp 目录
- 在项目设置中创建 QT_QPA_PLATFORM_PLUGIN_PATH 变量
- 使用 -platform 和 -platformpluginpath 参数运行 myapp
- 使用带有 QT_QPA_PLATFORM_PLUGIN_PATH 参数的 qt.conf 文件
有趣的是,当我将“MYPATH\Qt\5.6\msvc2015_64\plugins\platforms”目录从“platforms”重命名为“platformsX”,我本地计算机上的应用程序也开始崩溃。
它看起来像一个填充不佳的全局变量,但对我没有任何作用。
这个问题被标记为重复“Qt5 Static Build yields Failed to load platform plugin “windows””。 但是这里缺少 windeployqt.exe myapp.exe --dir myapp_deps 我写了那个帖子并应用了所有建议,但仍然遇到同样的问题。
最佳答案
默认情况下,Qt 在应用程序目录中查找其插件,但您也必须保留插件子目录。
在您的情况下,只需将 qwindows.dll
复制到 myapp\platforms
目录中,以便您的应用可以找到该插件。
更好的是,使用与您的 Qt 安装捆绑在一起的 windeployqt.exe 应用程序,它将复制所有必需的 Qt 库和插件。
例如,我将以下内容用作我的部署脚本的一部分:
windeployqt.exe myapp.exe --dir myapp_deps
这会将所有必需的 Qt 库、插件和 VC++ 可再发行组件(如果您正确配置了 VCINSTALLDIR/VSINSTALLDIR env)复制到 myapp_deps 目录。 (注意:如果省略 --dir
参数,则该命令会将所有依赖项复制到 myapp.exe 所在的当前目录)。
在此之后,如果您将 myapp.exe 放入 myapp_deps 并将该文件夹重新定位到另一台未安装 Qt 的 PC,那么 myapp.exe 将运行。
关于c++ - windows平台错误如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440501/