VS2005 编译的exe运行出现 0x00905a4d 处未处理的异常: 0xC0000005: 读取位置 0x00905a4d时发生访问冲突

背景:


在VS2005编译C++文件,其中用到C写的动态链接库。编译链接都没有问题,但运行exe时运行到动态链接库中函数时,弹出0x00905a4d 处未处理的异常: 0xC0000005: 读取位置 0x00905a4d时发生访问冲突【注:错误地址因程序不同会有所不同】。这说明动态链接库编译的有问题,然后检查动态链接库编译选项,果然在链接器-》调试-》调试信息设置为 【否】 导致出现问题。


解决办法:


(1)项目-〉属性-〉配置属性-〉C/C++-〉常规-〉调试信息格式,这里不能为【禁用】


(2)项目-〉属性-〉配置属性-〉链接器-〉调试-〉生成调试信息,这里设为【是】


这种方法虽然能解决编译问题,但程序运行时还是会提示找不到动态连接库MSVCR80.DLL,你也可以手动下载这个动态链接库放到执行文件所在目录,解决问题。但VS编译器为什么会出现这样的错误呢,还需要找到根本原因。


根本原因:


由于VC需要把生成的文件中嵌入MANIFEST文件,而杀毒软件之类的会握有这个文件句柄(因为杀毒软件发现这个EXE,DLL正在读写),于是VC就写不进去了。解决方法是暂时关闭杀毒软件,这样就不用改写MANIFECT





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值