MFC42D版本错误引起的访问冲突accessviolation
时间:2021-07-01 10:21:17
帮助过:63人阅读
一个vc6的程序,移植到vs2005下,经过一番调试,Release 版可以运行了,Debug却总也出现: 冒出的对话框为:Windows 已在 Plan_D.exe 中触发一个断点。 其原因可能是堆被损坏,这也说明 Plan_D.exe 中或它所加载的任何 DLL 中有 bug。 输出窗口可能提供了更
一个vc6的程序,移植到vs2005下,经过一番调试,Release 版可以运行了,Debug却总也出现:
冒出的对话框为:Windows 已在 Plan_D.exe 中触发一个断点。
其原因可能是堆被损坏,这也说明 Plan_D.exe 中或它所加载的任何 DLL 中有 bug。
输出窗口可能提供了更多诊断信息
Plan_D.exe 中的 0x5f42d429 处最可能的异常: 0xC0000005: 读取位置 0x0000000c 时发生
访问冲突Plan_D.exe 中的 0x7d64a79e 处最可能的异常: 0xC0000005: Access violation
Plan_D.exe 中的 0x7d64a79e 处未处理的异常: 0xC0000005: Access violation
这样的错误,找了很久都不明白什么意思。
仔细看了一下调试窗口和输出窗口,发现0x5f42d429 对应的模块应该是MFC42D.dll。mfc42d.dll是MFCDLL共享库文件,用于支持调试版本的MFC程序。有可能是这个文件本身有问题,搜索发现,机器上有两个MFC42D.dll,我正在使用的是2004年的,1M多,另一个是98年的,900k的样子。想到我的工程是从VC6移植过来的,可能需要98年的那个。换了之后,OK!