vs2010中win32配置下程序报错0xc000007b无法正常启动

在VS2010中,一个32位的Win32程序在运行时遇到了0xc000007b错误。经过排查,发现是由于32位程序加载了64位版本的CRT库导致。通过dependency工具检查,确认了问题所在。解决方案是将32位的msvcp100d.dll和msvcr100d.dll放入SysWOW64目录,遵循64位Windows系统中32位程序与System32和SysWOW64目录的关系。此外,建议直接从VS安装目录复制正确的CRT库覆盖系统文件,以确保正确运行。

新来的同事电脑出现一个奇怪的问题,vs中写了一个HelloWorld程序,编译运行后报错如下

表现上是win32配置编译后运行,报如上错误,win64的配置编译后运行正常

一开始怀疑是他的VS环境有问题,不过exe放在外边运行也是一样的错误,所以排除。

后来也在网上查了一些资料,基本锁定了是exe需要的CRT库版本没有匹配上。

小工具dependency的截图如下,明明是32位的exe现有依赖的却是64位的C运行库。

于是乎,我开始怀疑他64位的系统里,system32目录下的dll版本是错的,但是用dependency检查了发现没毛病,确实是32位的。省略中间的来回排查和纠结。。。

后来,我回到我的电脑,检查了我系统里的system32目录,发现我的syswow64目录里的msvcp100d.dll和msvcr100d.dll全是32位的,此时,我有点怀疑人生。。不,怀疑直觉。。于是手动百度了windows64和32位的dll使用方案,于是看到了下边这位的答案,简直就是我的问题的翻版。

https://www.cnblogs.com/hbccdf/p/dllchecktoolandsyswow64.html

感谢上边这位仁兄,他的回答让我茅塞顿开,这么多年都没发现system32和syswow64的奥秘,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值