Qt 5.13.x(MinGW)含 QML 程序发布后“双击无反应”:Qt 库版本混用 + QML 模块缺失完整排查实战(windeployqt)
1. 背景与问题现象
在 Windows 下使用 Qt 5.13.x + MinGW 开发的程序(含 QML/QtQuick),通过 windeployqt 打包后复制到发布目录,出现以下现象之一:
- 双击 exe 无界面、无提示(闪退/黑屏)
- 日志中出现 Qt 库版本冲突 或 QML 模块缺失(例如 QtQuick/QtMultimedia not installed)
本文基于一次真实排查过程,整理成可复用的教学式排查流程,并给出最终可直接使用的部署命令。
2. 环境信息(本次实战)
- Qt:5.13.2
- 编译器:mingw73_64
- 项目:含 QML(QtQuick),且 QML 中 import 了 QtMultimedia
- 数据库:使用 MySQL 驱动插件 qsqlmysql.dll
- 系统:Windows
3. 核心结论(先给结论,便于快速定位)
本次“打包后双击无反应”由 两类问题叠加导致:
-
Qt DLL 版本混用(5.13.0 与 5.13.2)
罪魁祸首位于:plugins\sqldrivers\qsqlmysql.dll(旧版 5.13.0) -
QML 模块未正确部署
缺少--qmldir导致windeployqt未扫描到 QML import,运行时出现:
module "QtQuick" is not installed/QtMultimedia not installed
4. 排查总流程(按时间线拆解)
| 步骤 | 现象/关键日志 | 定位结论 | 处理动作 |
|---|---|---|---|
| 1 | windeployqt 后仍打不开 |
初步怀疑插件/QML 部署不全 | 确认 platforms 插件存在;开启日志 |
| 2 | Fatal: Cannot mix incompatible Qt library (0x50d00 vs 0x50d02) |
Qt 库版本混用 | 清空目录重部署 + 排查所有 dll 版本 |
| 3 | 批量检查 dll 版本 | 发现 qs |

249

被折叠的 条评论
为什么被折叠?



