在把vc6.0下的项目移植到vs2005下,将所有的编译错误都改完了,然后运行出现:

HEAP[****.exe]: Invalid Address specified to RtlFreeHeap( 00390000, 003BB3F8 )

其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug VS2005debug下报R6034错误_第1张图片 

因为程序中使用了OpenCV库,我发现用的是release版本的OpenCV库,所以需要将OpenCV源码重新编译一份debug版本的(我用的OpenCV1.0)。编译的时候直接打开OpenCV安装目录下的_make中的工程文件即可。

使用了debug版本的库后,又出现了如下错误:

Runtime Error!
Program: ****\*.exe
R6034
"An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information."
 

**.exe 中的 0x7c9866c6 处未处理的异常: 0xC0000142: DLL Initialization Failed

在网上找了一些答案:最终有效的是

在 stdafx.h加入这句

#pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='X86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")

vs2008的话改成VC90.CRT 

version='8.0.50608.0' 改成你的vs的版本。