您的位置:首页 > 编程语言 > C语言/C++

Microsoft Visual C++ Runtime Library_Debug Assertion Failed!

2015-04-21 22:07 1006 查看
开发环境:Visual Studio 2012

VTK版本:VTK-5.10.1

问题描述:按照VTK-5.10.1的例程vtkSDI进行实验的时候,运行时提示:



点击“重试(R)”,提示:



点击“中断(B)”,这时打开了afxwin1.inl文件,并且定位到了提示错误的行:



由上图可见,出错的位置为函数:

_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
	{ ASSERT(afxCurrentInstanceHandle != NULL);
		return afxCurrentInstanceHandle; }


函数分析:

_AFXWIN_INLINE——内联函数[4]
HINSTANCE——实例句柄[5]
AFXAPI——调用约定[6][8]

根据参考资料[3]说明可知,AfxGetInstanceHandle()的功能是获取当前实例句柄。这里发生ASSERT()失败,表明当前afxCurrentInstanceHandle为NULL。

对于这个问题,网上流行很多种说法,其中参考资料[11]中有人提到“This can happen if you mix unicode/mbcs or debug/release build modes for DLL/application"。

根据上述提示,将项目的”字符集“设置为”未设置“,问题解决!



参考资料

[1]microsoft visual c++ runtime library

[2]解决microsoft visual c++ runtime library办法

[3]AfxGetInstanceHandle

[4]_AFXWIN_INLINE 是什么意思

[5]HINSTANCE

[6]CALLBACK, WINAPI, AFXAPI和函数调用方式

[7]assert

[8]MFC Windows应用程序设计(第3版). 任哲 等编著. 清华大学出版社:14~15

[9]ASSERT(afxCurrentInstanceHandle!=NULL)

[10]调用HINSTANCE hInst = AfxGetInstanceHandle();程序在ASSERT(afxCurrentInstanceHandle != NULL);崩溃

[11]AfxGetInstanceHandle() triggers an assertion failure
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: