问题描述
在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
,不影响启动和运行的文件夹就可以放心得删掉了。