问题描述
在Windows系统中官方推荐使用windeployqt,使用C++开发的应用程序使用windeployqt很好用,但是使用Qml开发的应用却不能运行,双击之后一点反应也没有。
解决方法
先加后减
做加法
比如我的应用程序为app.exe,先做加法,把运行app.exe可能缺的东西全都加上来。
- 关闭
Qt Creaator。 - 把
app.exe放到C:\Qt\5.15.2\msvc2019_64\bin中运行,如果正常启动则继续。 - 将
app.exe放到一个空文件夹中(比如文件夹名为:folder)。 - 把所有的动态链接库
.dll文件都复制一份到folder中,动态链接库在我的系统中路径为C:\Qt\5.15.2\msvc2019_64\bin。 - 将所有的插件文件夹都复制一份到
folder中,插件文件夹在我的系统中路径为C:\Qt\5.15.2\msvc2019_64\plugins。 - 把所有的Qml相关的文件和文件夹复制一份到
folder中,Qml相关的文件在我的系统中路径为C:\Qt\5.15.2\msvc2019_64\qml。 - 运行
app.exe
此时app.exe应该是可以正常运行,接下来做减法,把运行app.exe不需要的东西全都删掉。
做减法
- 运行
app.exe。 - 选中所有的动态链接库,可以借助搜索来过滤后缀为
.dll的文件,然后删除,用到的动态链接库会提示被占用,跳过就好。 - 删除所有的
.pdb文件,同样可以借助搜索来过滤。 - [可选]清空回收站,万一删多了,方便找回来。
- 把从C:\Qt\5.15.2\msvc2019_64\qml和C:\Qt\5.15.2\msvc2019_64\plugins里面复制过来的文件夹一个一个地删除,每删一个都要重启下
app.exe,不影响启动和运行的文件夹就可以放心得删掉了。
本文介绍了在Windows系统中,针对使用Qml开发的应用程序无法通过windeployqt部署并运行的问题,提供了一种先加后减的解决方法。首先,将应用程序与所有必要的Qt库和插件复制到同一目录,确保程序能够正常启动。接着,逐步删除冗余的动态链接库和插件文件,通过试错找到最小依赖集,使应用仍能运行。该方法有助于精简部署包,确保Qml应用在Windows环境下顺利运行。
3万+

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



