详细描述
近日在使用Qt+VS编译项目时,发布出去以后别人告知无法运行。
x86版本的软件提示
x64版本的软件提示
解决过程
首先没管x64的错误,直接看x86的错误提示,发现是缺少了Qt的运行环境,对应问题在百度搜索一下得到如下解决方案:
使用windeployqt工具来进行Qt的打包发布:https://blog.youkuaiyun.com/sinat_36264666/article/details/73305712
因为确实是第一次写Qt项目,而且还是用VS写的,确实没想到光编译出Release版本还不行,还需要使用自带工具打包,然后在机器上使用工具打包以后再次发布,用户反馈x86问题解决,但x64问题还是存在!
为什么呢?我还是根据老思路直接百度查错误为什么出现应用程序无法正常启动0xc000007b,得到的答案依次是:
1.安装DX或修复DX
2.安装C++运行环境
3.安装.NET运行环境
4.软件版本与DLL版本不一致
5.缺少系统相关DLL
6.32位DLL和64位DLL弄混
依次尝试一遍以后发现都没有错误,最后发现是因为我是在虚拟机中编译的软件,在实机中打包的,而实机的Qt版本和虚拟机的Qt版本不一致!在使用虚拟机内的Qt重新打包后,问题解决。
这里再贴一篇博文,本人是参考他的方法一:绝对路径打包
https://blog.youkuaiyun.com/guanguanboy/article/details/104866903/
总结
其实0xc000007b这个类型的错误原因都是因为DLL的异常,这点首先要明晰,网上很多教程浮于表面根本没说清楚问题的本质。
遇到这类错误,在确定电脑环境都装上没问题后,对于开发者而言,首先要检查的还是你的软件的问题。因为这类错误不明确告知你的错误,很多人就会以为是客户机子环境的问题。基本来说,软件在设计的时候要考虑到用户环境,做好打包和测试工作。