欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 在Qt中直接在构建目录下直接运行.exe文件报错问题分析

在Qt中直接在构建目录下直接运行.exe文件报错问题分析

2025/4/8 3:18:53 来源:https://blog.csdn.net/weixin_45144862/article/details/146963450  浏览:    关键词:在Qt中直接在构建目录下直接运行.exe文件报错问题分析

在Qt中直接在构建目录下直接运行.exe文件报错问题分析

在学习Qt的过程中遇到过一个问题,直接在Qt构建目录下运行生成的.exe文件时会报错。这和MFC有一定的差别,如果MFC是可以直接运行的。

这是怎么回事呢?

在 Qt 中直接运行构建目录下的 .exe 文件(Windows 平台)时,需要确保以下 Qt 运行时库文件依赖项 已放置在正确的位置。否则会出现程序无法启动或报错(如 缺少 Qt5Core.dll 等)。

1. 必须的 Qt 库文件

你的 .exe 需要以下 核心 Qt DLL 文件(根据项目使用的模块动态调整):

(1)基础 Qt 库

这些是 所有 Qt 程序 都需要的:

文件说明
Qt5Core.dllQt 核心模块
Qt5Gui.dllGUI 基础模块
Qt5Widgets.dll控件模块(QWidget 程序)

(2)额外依赖库

如果你的项目使用了以下模块,还需对应的 DLL:

文件说明
Qt5Network.dll网络模块
Qt5Sql.dll数据库模块
Qt5Multimedia.dll多媒体模块
Qt5Qml.dllQML 模块
Qt5Quick.dllQuick 模块
其他你使用的 Qt 模块

2. 平台插件(必须)

Qt 程序运行时需要 平台插件platforms 文件夹),否则会报错:

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

必须包含的插件

1.platforms/qwindows.dll(Windows 平台插件)

2.其他可能需要的插件(如 minimal.dlloffscreen.dll

your_app.exe
├── platforms/
│   └── qwindows.dll
├── Qt5Core.dll
├── Qt5Gui.dll
└── Qt5Widgets.dll

如下图:

微信截图_20250402201350

3. 其他可能需要的文件

(1)ICU 数据文件(如果使用 Qt 国际化)

  • icudtXX.dll(如 icudt68.dll
  • icuinXX.dll
  • icuucXX.dll

(2)OpenGL 驱动(如果使用 QOpenGL)

  • opengl32sw.dll(软件渲染后备驱动)
  • 或系统自带的 opengl32.dll(硬件加速)

(3)样式表插件(如果使用自定义 QSS)

  • styles/qwindowsvistastyle.dll(如果需要 WindowsVista 样式)

(4)Qt 翻译文件(.qm 文件)

  • 如果你的应用支持多语言,需要 .qm 文件。

4. 如何获取这些文件?

方法 1:从 Qt 安装目录手动复制

  1. 进入 Qt 安装目录(如 C:\Qt\6.5.0\mingw_64\bin)。
  2. 找到你的 .exe 所需的 .dll 文件(如 Qt5Core.dll)。
  3. 复制到 .exe 所在目录。

方法 2:使用 windeployqt 自动部署

Qt 提供了 windeployqt 工具,可以自动收集依赖项:

# 进入构建目录
cd /d "你的构建目录\release"# 运行 windeployqt
windeployqt your_app.exe

它会自动复制所有需要的 .dllplugins.exe 目录。

注意

  • 确保 windeployqt 版本与你的 Qt 版本匹配(如 Qt 6.5.0 对应 windeployqt 6.5.0)。
  • 如果 windeployqt 找不到,检查 PATH 是否包含 Qt安装目录\版本号\编译器\bin(如 C:\Qt\6.5.0\mingw_64\bin)。

5. 验证是否可运行

  1. 确保所有 .dllplatforms/qwindows.dll 已正确放置。
  2. 双击 .exe 运行,如果无报错,则部署成功。

6. 常见问题

(1)报错:缺少 VCRUNTIME140.dllMSVCP140.dll

  • 原因:缺少 Visual C++ 运行时库(如果使用 MSVC 编译)。
  • 解决
    • 安装 Visual C++ Redistributable(根据编译器选择 x86/x64)。

(2)报错:无法定位程序输入点于 Qt5Core.dll

  • 原因Qt5Core.dll 版本不匹配(如 Debug/Release 混用)。
  • 解决:确保所有 .dll.exe同一构建模式(Debug 或 Release)。

(3)报错:This application failed to start because no Qt platform plugin could be initialized

  • 原因platforms/qwindows.dll 缺失或路径错误。
  • 解决
    • 确保 platforms 文件夹和 .exe 在同一目录。
    • 或设置 QT_QPA_PLATFORM_PLUGIN_PATH 环境变量指向 platforms 目录。

总结

所需文件说明
Qt5Core.dllQt 核心库
Qt5Gui.dllGUI 基础库
Qt5Widgets.dll控件库(QWidget 程序)
platforms/qwindows.dllWindows 平台插件
其他模块的 .dllQt5Network.dll
VC++ 运行时如果使用 MSVC 编译

platforms/qwindows.dll | Windows 平台插件 |
| 其他模块的 .dll | 如 Qt5Network.dll |
| VC++ 运行时 | 如果使用 MSVC 编译 |

推荐使用 windeployqt 自动部署,避免遗漏依赖项!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词