1.前言:
我在Qt Creator中使用CMake创建的项目,在Qt Creator中程序运行正常 (release版本) ,然后我尝试在文件夹中点击exe运行程序,提示我缺少动态库,随后我使用这个方式:参考博客,添加了缺失的动态库,继续点击exe程序,又提示我缺少libgcc_s_dw2-1.dll动态库,查阅资料可知windeployqt.exe 主要处理 Qt 框架自身的依赖,有时候会漏掉编译器的运行库,因此在使用windeployqt.exe的同时要加上--compiler-runtime选项:
bash
windeployqt.exe --compiler-runtime your_app.exe
2.主要问题
解决完上面的问题后我继续点击exe程序,然后系统提示我0xc000007b的问题,以前使用QMake的时候未出现过这个问题,后面查阅相关资料可知,使用QMake的时候 windeployqt工具会尝试自动检测你的 your_app.exe 是 Debug 版本还是 Release 版本。但在某些情况下(如使用 CMake 或自定义构建系统),自动检测可能失败。此时加上 --release 参数,就是明确告诉工具"我的程序是 Release 版本,请按 Release 模式处理"。
3.问题原因
我就是因为我程序是Release 版本,但是使用windeployqt工具时检测出来的是debug版本,所以补齐的依赖库也是用的debug版本,这就导致系统提示0xc000007b,如下图所示:

4.解决方法
bash
windeployqt.exe --compiler-runtime --release your_app.exe