VLD-添加到vs2008后,发生“程序无法运行”错误

    本人在项目中使用VLD检查内存泄露问题,但是有时候能正常添加到项目中并且项目能正常运行,但是也有很多次添加到项目中之后项目无法启动,出现“应用程序正常启动失败(0xc0150002) ” 错误,在系统的管理的事件查看器中也没有关于该错误的提示信息,经过查阅网络资源,发现不少网友也出现该情况,但是所有的解决办法都不能解决,最后经过多方英文文档查询,发现问题引起的原因如下:

VC2003、VC2005、VC2008及其后续版本,对底层最基本的CRT、MFC、ATL库都进行了重构为了避免不同版本的库引起冲突,重构后的库文件一般放在C://windows/WinSxS 文件夹中,并用特定的文件夹/文件名称进行标识;
    与VC6不同, VC2003、VC2005、VC2008及其后续版本,引入了manifest清单的概念,即应用程序编译后会同时生成对应的.manifest文件,并将该.manifest文件作为资源编译到dll或者exe中去。.manifest文件实际上是一个XML格式的文本文件,里面记录了dll或exe中要引用的CRT、MFC、ATL库的版本和名称。VC6编译的应用程序对CRT、MFC、ATL的dll都是直接调用,而VC2003、VC2005、VC2008编译的程序都是先查询编译到资源中的manifest中的记录然后按照记录提供的版本和名称去搜寻对应的CRT、MFC、ATL库以及随库发布的.manifest文件,搜寻的路径包括当前目录、C://windows/WinSxS等等,如果没有找到对应的库文件,则提示“应用程序正常初始化失败”。
 
    这两篇有解决办法,就是把VLD中的这两个复制到执行文件夹下就正常了(bin目录下所有资源清单文件和dll)
Microsoft.VC90.CRT.manifest
Microsoft.DTfW.DHL.manifest

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝壳里的沙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值