当前位置: 首页 > news >正文

在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 自动部署,避免遗漏依赖项!

http://www.dtcms.com/a/107062.html

相关文章:

  • antvX6自定义 HTML 节点创建与更新教程
  • 使用Leaflet对的SpringBoot天地图路径规划可视化实践-以黄花机场到橘子洲景区为例
  • 爬虫【Scrapy-redis分布式爬虫】
  • SQL 转 PHP Eloquent、Doctrine ORM, 支持多数据库
  • [python] 正则表达式
  • Enovia许可类型及其区别
  • 蓝桥杯 web 知识点集合
  • ngx_sprintf
  • Nginx 核心配置详解与性能优化最佳实践
  • 栈 —— 数据结构基础刷题路程
  • Linux: 进程信号初识
  • 批量提取 PDF 文档中指定页为新的 PDF 文档
  • 【结肠AI分割论文合集1(2021~2023年份)】A survey1
  • 深入探索Redisson:用法全解析及在微服务中的关键应用
  • UCOS和RTOS的区别
  • 算法:双指针法--计算两数之和
  • 数据驱动的智能BMS革新:机器学习赋能电池健康预测与安全协同优化
  • 重新安装VMware tools为灰色无法点击问题解决|读取电脑文件的共享文件夹方法
  • 蓝桥杯刷题
  • 4月2号.
  • 代码随想录C++算法训练,二叉树(day18)
  • 辛格迪客户案例 | 盛大康成GMP质量合规数字化(QMS)项目
  • ros2--urdf--IMU
  • uperMap GIS基础产品FAQ集锦(20250402)
  • 「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用
  • [ 3分钟算法 ] | 递归搜索题目 : 合并两个有序链表(递归版)
  • C++虚继承及其它特性
  • 智谱发布AI Agent“AutoGLM沉思”,开启AI“边想边干”新时代
  • k8s之Ingress讲解
  • 定制化自己的 RAG 框架:结合 LlamaIndex 与自定义优化