Qt程序发布工具windeployqt.exe所带来的坑

一、使用Qt自带的发布工具:windeployqt.exe来自动查找运行时库文件,是个好办法。但是该工具有坑!并且坑很深!我在发布程序时就遇到了一个大坑!我使用该工具进行程序发布,自动查找运行时库文件,看起来比较完美,所有用到的DLL文件都准备齐全!在开发机上也能正常运行!但是发布到客户端后,却无法运行!并且报错:0xC000007b,直接一头慒!后来经过1天多的问题查找,终于搞明白了为什么会报这样的错误!
二、故障排查步骤:我首先考虑到的是Qt的依赖库出了问题!于是我就尝试在开发机上把Qt文件夹改名,因为开发机上运行是正常的,结果改名后,开发机也运行不了!心里暗自欢喜!问题终于有了线索!然后继续深订追查!把Qt文件夹名称恢复了,然后根据所用的编译器,找到编译器所在路径的bin文件夹,尝试改名,然后再次运行,结果还是无法运行,范围又缩小了!然后我就把bin文件夹中的所有dll文件全部拷贝到了应用程序的发布文件夹中,再把bin文件夹改名,再次运行,结果正常运行了,于是问题就锁定在bin文件夹的dll文件上。然后对发布文件夹中的所用到的Qt的库文件(基本都在编译器的bin文件夹中)与Qt编译器下的bin文件夹中的对应dll文件进行了对比,发现有大小不同文件存在,于是把这类文件用bin文件夹中的dll库文件替换,然后发布到客户端运行,结果正常运行!
三、发现的windeployqt.exe的问题:发现这个工具把msvc2017编译器下的bin文件夹中的Qt5OpenGL.dll和Qt5Test.dll两个文件拷贝到了发布文件夹中,我用的编译器是mingw73_64,在开发机上你试不出来,因为你的系统路径中有Qt的路径,程序会根据系统路径自动查找用到的dll文件,即便是你的发布文件夹中拷贝错了,系统也能找到对应的dll文件,但是在客户端上是没有Qt环境的,所以程序就找不到需要的dll文件了,应用程序文件夹中的dll文件又是不正确的,所以就报错了!
四、我的问题解决方法:拷贝mingw73_64\bin\Qt5OpenGL.dll和mingw73_64\bin\Qt5Test.dll到发布文件夹中即可解决。

秋风 写于淄博 业务联系与技术交流:Q375172665

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值