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

news2025/4/25 16:18:44

在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.coloradmin.cn/o/2327173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

头戴式面捕头盔:高精度捕捉真人面部表情,赋能元宇宙多场景应用

随着元宇宙虚拟人与现实场景的不断交融,如何赋予虚拟人更加自然,灵动的表情成为了业内人员共同讨论的话题,尤其是在虚拟人直播,影视动画制作方面。在虚拟人直播间,丰富的面部表情可以赋予虚拟人更加生动的情感表达&…

LLM大模型教程——什么是AI大模型

引言 当GPT-4展现出惊人的上下文理解能力,当Stable Diffusion创造出媲美人类画师的图像作品,当AlphaFold2破解蛋白质折叠密码——这些里程碑事件标志着人工智能发展进入大模型主导的新纪元。本综述将深入解析这一技术革命的核心载体——AI大模型。 一、AI 大模型是什么​ 概…

机器学习(八):K-Means聚类原理与实战

声明:未经允许禁止转载与抄袭。 前言 k k k均值( k k k-means)聚类算法是一种经典的无监督聚类算法,本文将深入解析其理论原理,并在真是数据集上进行算法实践,话不多说,请看下文。 算法原理 …

【stm32--HAL库DMA+USART+空闲中断不定长收发数据】

串口通信-Hal库实现不定长度收发,DMAUSART DMA串口STM32CUBEMX配置(工程创建)基础配置时钟配置工程配置 代码编写现象 DMA 在正式配置之前,我们先来一起简单了解一下DMA。DMA(Direct Memory Access,直接内…

【SPP】蓝牙串口配置中LM互操作性要求深度解析

在蓝牙协议栈中,链路管理器(Link Manager, LM)承担着链路建立、安全管理、功耗控制等核心功能。对于串行端口配置文件(SPP)而言,LM 的互操作性直接影响连接稳定性、数据安全性和设备功耗。本文基于蓝牙核心…

Java迭代器【设计模式之迭代器模式】

目录 一.前言 二.正文 1.我写的类为什么不能使用增强for(迭代器遍历) 2.代码健全性——迭代器常见的两个Exception 1.NoSuchElementException 2.ConcurrentModificationException 三.后言 一.前言 本篇面向对象主要为和我一样的小白,主要是对迭代器模式的浅…

Eclipse IDE

创建新的Java项目和类 在 Eclipse IDE 中创建一个新的 Java 项目和 Java 类的步骤如下: 1. 创建新的 Java 项目 打开 Eclipse IDE。在菜单栏中,点击 File > New > Java Project。在弹出的对话框中,输入项目名称(例如&…

计算机视觉算法实战——基于YOLOv8的自动驾驶障碍物实时感知系统

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 引言:自动驾驶感知系统的关键挑战 自动驾驶技术正以前所未有的速度重塑交通出行方式&#xff…

【boost搜索引擎】下

boost搜索引擎 1. 编写搜索引擎模块 Searcher2. 编写 http_server 模块3. 编写前端模块4. 添加日志5. 补充 去掉暂停词6. 项目扩展方向 1. 编写搜索引擎模块 Searcher 这一模块主要提供建立索引,以及收到用户的发起的http请求通过Get方法提交的搜索关键字&#xff…

数据结构优化DP总结

单调栈:Codeforces Round 622 (Div. 2) C2. Skyscrapers (hard version) 简单来讲就是最后需要呈现出一个单峰数组,使得总高度最高。 最开始想到暴力枚举每一个元素都充当最高的“单峰”,但是这里的 n 过大,这样枚举肯定会TLE。 …

[Linux系统编程]进程间通信—system V

进程间通信—system V 1. System V 共享内存(Shared Memory)1.1 共享内存的建立过程1.2 共享内存函数2. System V 消息队列(Message Queues)3. System V 信号量(Semaphores)4. 总结前言: 之前所提的管道通信是基于文件的,OS没有做过多的设计工作。 system V 进程间通信…

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(部分题解)

文章目录 前言日期统计题意: 冶炼金属题意: 岛屿个数题意: 子串简写题意: 整数删除题意: 总结 前言 一年一度的🏀杯马上就要开始了,为了取得更好的成绩,好名字写了下前年2023年蓝桥…

分析sys高问题的方法总结

一、背景 sys高的问题往往属于底层同学更需要关注的问题,sys高的问题往往表现为几种情况,一种是瞬间的彪高,一种是持续的彪高。这篇博客里,我们总结一下常用的分析方法和分析工具的使用来排查这类sys高的问题。 二、通过mpstat配…

智谱发布AI Agent“AutoGLM沉思”,开启AI“边想边干”新时代

近日,智谱正式推出全新AI Agent产品——AutoGLM沉思,标志着人工智能从“思考”迈向“执行”的关键突破。该智能体不仅具备深度研究能力,还能自主完成实际操作,真正实现“边想边干”的智能化应用。 在演示环节,智谱展示…

使用Leaflet对的SpringBoot天地图路径规划可视化实践-以黄花机场到橘子洲景区为例

目录 前言 一、路径规划需求 1、需求背景 2、技术选型 3、功能简述 二、Leaflet前端可视化 1、内容布局 2、路线展示 3、转折路线展示 三、总结 前言 在当今数字化与智能化快速发展的时代,路径规划技术已经成为现代交通管理、旅游服务以及城市规划等领域的…

【小兔鲜】day02 Pinia、项目起步、Layout

【小兔鲜】day02 Pinia、项目起步、Layout 1. Pinia2. 添加Pinia到Vue项目3. 案例:Pinia-counter基础使用3.1 Store 是什么?3.2 应该在什么时候使用 Store? 4. Pinia-getters和异步action4.1 getters4.2 action如何实现异步 1. Pinia Pinia 是 Vue 的专…

PyTorch 激活函数

激活函数是神经网络中至关重要的组成部分,它们为网络引入了非线性特性,使得神经网络能够学习复杂模式。PyTorch 提供了多种常用的激活函数实现。 常用激活函数 1. ReLU (Rectified Linear Unit) 数学表达式: PyTorch实现: torch.nn.ReLU(inplaceFals…

魔塔社区使用llamafactory微调AI阅卷试题系统

启动 LLaMA-Factory 1. 安装 LLaMA-Factory 执行安装指令 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]"解决依赖冲突 如果遇到依赖冲突,可使用以下命令安装,不…

如何在 Unity3D 导入 Spine 动画

一、前言 《如何在 Unity3D 项目中导入 Spine 动画》,虽然在网上有很多这种文章,直接将问题交给 DeepSeek 也能得到具体的操作流程,但是照着他们提供的方法还是能遇到几个问题,比如: AI 回答没有提到 Unity 无法识别.…

论文笔记:ASTTN模型

研究现状 现有研究大多通过分别考虑空间相关性和时间相关性或在滑动时间窗口内对这种时空相关性进行建模,而未能对直接的时空相关性进行建模。受最近图领域Transformer成功的启发,该模型提出利用局部多头自关注,在自适应时空图上直接建立跨时…