Qt使用打包软件会出现主程序运行异常
Qt常用打包软件windeplotqt(只适用windows下)
windeplotqt软件是Qt自带的自动打包软件,能根据exe依赖库,补充缺少的动态库,详细用法这里就不介绍,但是这打包软件真的不好用,经常打包的依赖库都是缺失的,经常需要VS dumpbin软件对响应的库进行依赖查询。
遇到问题
我们经常会遇到windeplotqt打包软件,在打包过程中丢失依赖库,虽然可使用VS中dumpbin /dependents指令查询对应dll/exe依赖的库是否缺失,可以依照反馈依赖的dll,进行补充,虽然小心翼翼加载所需要的dll,但是exe还是会出现无法正常打开情况。(以下是exe遇到情况)
-
运气好会弹窗提示,显而易见必须依赖的dll
-
运气差的会提示,不直接明确错误点在哪里
.
这种提示平台插件错误
3.最坏的情况是点击了没反应,任何提示都没的那种。(反正一定有什么东西缺失了,但是我不知道)
只见窗口一闪而过,留下一脸懵逼的我
第三种情况是最尴尬的,用dumpbin软件观察依赖库,有些dll又互相依赖,不可能能一个个去查看依赖情况,总会遗漏点库,那怎么办,有办法知道加载啥dll,或者能够有张表格对比丢失dll是哪些呢
解决方案
如果你能在QtCreator开发工具下正常跑,只是打包出来的软件异常了,那恭喜你,有机会解决这个麻烦
1.QtCreator下点击调试模式
x
底部调试状态下点击view按键
在view弹出菜单窗口中勾选Debugger log(调试日志)
顶部会出现依次加载dll
根据你打包好的文件夹下,对应查找(Ctrl+F过滤关键字)加载过Qt库,以及你本地目录下依赖库(windows自带dll一般不需要依赖),路径可以依照(DebugLog窗口显示)加载dll路径,把所需dll直接复制过来。
总结
使用QtCreator开发工具,里面能够获得依次加载过的dll,相对于无头苍蝇去加载乱七八糟的dll,能够更好整理依赖库的管理,可以把没加载过dll删除,减小包的大小。