c++ - windows平台错误如何解决

标签 c++ windows qt

我制作 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"

我阅读了所有关于此的主题,但没有找到解决方案。

我失败的步骤

  1. 将 libEGL.dll 复制到 myapp 目录中
  2. 将 libEGLSv2.dll 复制到 myapp 目录
  3. 将 qwindows.dll 插入 myapp 目录
  4. 将所有 dll 插入 :-) 到 myapp 目录
  5. 在项目设置中创建 QT_QPA_PLATFORM_PLUGIN_PATH 变量
  6. 使用 -platform 和 -platformpluginpath 参数运行 myapp
  7. 使用带有 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/

相关文章:

c++ - recv() 结果必须等于缓冲区长度吗?

c++ - 在 Linux 中运行 exe

c++ - Qt 表模型列覆盖

java - 通过环境变量或 JVM 参数提供 key ?

Qt 的 QDir : File Names Dropping Non-Ascii Characters

python - 为什么 PyQt5 小部件有时具有相同的 id?

c++ - Box2D:程序在破坏 b2Body 时崩溃

windows - 栈和栈基地址

python - 将Python添加到Windows路径

qt - 如何在 Qt 中禁用打开子窗口的父窗口?