【qt飞机大战】以msvc2015_64编译后发布到虚拟机(win7)启动报错0xc000007b

在这里插入图片描述
跟着网上教程写了个飞机大战的demo,以msvc2015_64编译后,在本机上可正常运行,但是发布到虚拟机(win7)上后就会启动报错0xc000007b,最后定位原因是虚拟机(win7)缺少sp1包以及vc++2015。

1.虚拟机环境:

虚拟机版本:VMware® Workstation 17 Player 17.0.2 build-21581411
使用镜像:cn_windows_7_ultimate_x64_dvd_x15-66043.iso (win7旗舰版7600)
内存:2G
硬盘:30G (最开始是15G,装SP1时发现不够用才拓展到30G,磁盘管理工具Diskgenius
与本机的通信方式:局域网络共享+FeiQ

镜像cn_windows_7_ultimate_x64_dvd_x15-66043.iso
https://pan.baidu.com/s/1n2bXIah8RIagjWnT9pN43w 提取码:gqgk
win7激活工具
https://pan.baidu.com/s/1sfu8eSlMN9CXLwWV8aPFAg 提取码:cufu
FeiQ 2013版
https://pan.baidu.com/s/1D8JaiefgXtsNzZK6UK66lQ 提取码:dkyt

2.发布操作

1.删除旧文件夹 build-planeWar-Desktop_Qt_5_9_1_MSVC2015_64bit-Release
2.设置环境变量PATH,指定windeployqt.exe的路径,根据编译器mingw53_32、msvc2015、msvc2015_64分别选择以下三个路径:
(我用的是msvc2015_64,所以只配了这个,另俩没写)
E:\Qt\Qt5.9.1\5.9.1\mingw53_32\bin
E:\Qt\Qt5.9.1\5.9.1\msvc2015\bin
E:\Qt\Qt5.9.1\5.9.1\msvc2015_64\bin
3.构建新的 build-planeWar-Desktop_Qt_5_9_1_MSVC2015_64bit-Release,记得放入rcc资源文件
4.运行测试一下
5.复制build-planeWar-Desktop_Qt_5_9_1_MSVC2015_64bit-Release\release\planeWar.exe和rcc资源文件,找个不碍事的地方,新建文件夹planeWar,放入planeWar.exe和rcc资源文件
6.在文件夹planeWar中打开终端界面
7.执行命令 windeployqt .\planeWar.exe
8.双击运行planeWar.exe,测试一下

3.虚拟机测试

9.复制文件夹planeWar,发送到虚拟机(win7)
10.双击运行planeWar.exe,测试一下
11.若测试未通过,请参看下面问题记录

4.问题记录

在装SP1和vc++2015前
1.如果使用的是mingw53_32发布的程序测试报错缺少dll文件,补充上这三个就能正常运行libwinpthread-1.dll、libstdc+±6.dll、libgcc_s_dw2-1.dll
2.如果使用的是msvc2015或msvc2015_64发布的程序测试报错缺少dll文件(我是缺下图这几个),即使是补充上了,最后依旧后报错0xc000007b,哪怕是最简单的hello_world程序也不行,别问我怎么知道的。
在这里插入图片描述
3.为了解决0xc000007b的问题,网上建议检查3个地方:
(1)补充的dll文件是否正确。因为通过everything搜索时,Qt5Core.dll/Qt5Multimedia.dll/Qt5NetWork.dll三个文件是固定的,就在Qt5.9.1\5.9.1\msvc2015_64\bin路径下;而api-ms-win-crt-runtime-l1-1.dll/msvcp14.dll/vcruntime140.dll查会出来好多,让我这小白是一脸懵,最后选用的是C:\Windows\System32\下的,咱也不知道对不对。
(2)是否已安装net framework 4.0。我从官网下了一个,但是没装上,又从网上换了个装上了(但得先用dotnetfx_cleanup_tool清理下,记得重启win7)

官网net framework 4.0
https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe
非官网net framework 4.0
https://pan.baidu.com/s/1HB-nh0gf-w2y-j_haJk0Ag 提取码:jaa4
dotnetfx_cleanup_tool
https://pan.baidu.com/s/1sOwwAElVOdBxPEbx-dsIqw 提取码:7ecq

(3)DirectX修复。从网上随便找了个DirectX_Repair修复一下,因为vc++库缺失,所以无法100%修复,而且因为我还额外装了微软常用运行库合集,所以最后只报错vc++2015相关的未修复成功。

DirectX_Repair
https://pan.baidu.com/s/1cKpKB0fYb1c160NDRxN9kA 提取码:b3gg
微软常用运行库合集2021
https://pan.baidu.com/s/1HgaIy2Pfu0BdMR0B0TmJ4A 提取码:01gx

在装SP1和vc++2015后
4.经过前面3个步骤,依旧无法正常运行planeWar.exe,所以采用终极策略:安装sp1补丁包

(1)win+R终端界面输入winver检查系统版本(应该是7600),安装完sp1后,再检查(应该是7601)
在这里插入图片描述
(2)重新进行前面的DirectX修复,完成Microsoft Visual C++ 2015 Redistributable的安装

win7旗舰版64位sp1补丁包
https://pan.baidu.com/s/1n0zt4iU19mXEv9lnyzmQqg 提取码:j440

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

馍拉克斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值