QT程序发布报错:0xc000007b,【详细解决方案】
1. 问题表现
- 报错:缺失xxx.dll文件
- 加载对应dll文件后,报错0xc000007b
2. 问题表现
根据网上查找相关问题分析,该问题是X86和X64依赖混乱导致。
可以使用 Depends软件 进行查看,分析exe文件,dll文件所包含的依赖使用情况
3. 问题解决
先从打包的根源说起,一步一步进行分析
- 打包方式
使用QT自带的打包工具MinGW进行打包
运行MinGW的方式有两种, 一种是配置环境变量,直接在cmd窗口运行 ;另一种是 直接运行MinGW窗口,两种运行原理一样 , 只是方式不同。 打包的命令如下:
windeployqt xxx.exe
- 利用cmd命令窗口打包
要想直接在cmd命令窗口执行命令,需要配置相关环境变量。
这里注意一点: 设置环境变量的时候,建议将mingw的路径信息置于最顶层!
因为mingw进行打包的时候,根据其缺少哪些dll,自动进行查找;
由于电脑中存在同名但是不同平台的dll,如果先查到了其他的dll文件,就会导致打包后程序运行错误,一定要保证优先从mingw的文件夹下进行查找。配置路径信息如下:
%MinGW_PATH%\include;
%MinGW_PATH%\bin;
%MinGW_PATH%\lib;
%MinGW_PATH% :代表你的MinGW的路径
- MinGW命令窗口(推荐)
如果在菜单栏中直接输入MinGW,可以进入到MinGW运行环境,直接输入相关命令即可!
这种情况下,基本不存在打包过程中出现的X86与X64混乱的情况。
- 添加缺失文件
当用MinGW打包工具打包完之后,如果不能成功运行,报错:丢失xxx.dll文件,需要去找到对应的dll文件。
大家在找对应的文件的时候,一定要小心,同名的dll文件可能有很多,但是尽量要找到mingw安装目录下的dll文件,因为这才是其真正使用的dll,否则后续运行的时候就会报错0xc000007b。
如果步骤正确,此时运行将会没有问题!
4. 总结
- 环境变量的添加,建议置顶。
- 推荐直接在菜单栏打开MinGW,直接在其环境下进行打包。
- 如果确实dll文件,添加dll的时候,一定要优先找到mingw目录下的dll