欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Qt程序发布工具windeployqt.exe所带来的坑

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

2024/11/30 12:42:11 来源:https://blog.csdn.net/hmwz0001/article/details/139477491  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com