关于run-time error:The thread has exited with code :1073741701 (0xc000007b)

这两天被一个问题搞得吃不下饭,睡不着觉,具体见下图:



此工程用VC6.0编辑,machine环境为64-bit,工程是win32-console application,编译链接均正常,但是运行时出现run-time error:

The thread has exited with code :1073741701 (0xc000007b)


于是我就百度之,一看都是说DirectX9.0出了问题,那么我就重装DirectX9.0,显然不行。


要说还是google靠谱,查询的问题总能有人提问,完美的契合,并做了很好的解答。于是我得知这是一个Win32的工程,但是在链接系统DLL的时候,却链接了64位的DLL。


这里要讲明,Windows下的系统DLL库位于C:\Windows\system32&syswow64下,但这里有一个巨坑,那就是,syswow64里面的DLL都是32位的,在Win32可执行文件链接DLL的时候,Windows会自动链接到syswow64中进行查找。


于是乎,好啊,我就看看该可执行文件到底依赖了哪些DLL,这里推荐使用一个工具Dependency Walker,他可以查看该exe文件依赖了哪些动态库。于是我就将那些检索不到的DLL都下载下来,放到可执行文件同一目录下(这里推荐脚本之家网站查找DLL,很全面且绿色无广告),但是始终会报如下错误:

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

这是我想起来google上的老外说的,可能是这个32位的exe尝试去链接了64位的DLL,但是二者是有差异的,所以有些函数找不到定义,于是我就去syswow64里面查看到底哪些DLL是64位的,这里推荐一个工具,挺好用的,可以判断DLL是32位的还是64位的。

http://www.xdowns.com/soft/6/56/2015/Soft_146958.html(声明作者为:x1688@163.com)


这样我就检测到了msvcr100d.dll这个动态库是64位的,于是去脚本之家下载个32位的,完美解决!(这时我才想起来,昨天打开exe时,说缺失msvcr100d.dll,我一想系统是64位的,就下了个64位的放里面,哎,作死啊)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值