QT程序发布报错:0xc000007b,【详细解决方案】

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

发布于 2020-12-08 07:12