代码改变世界

unresolved external symbol __report_rangecheckfailure 解决思路

2016-05-12 16:39  youxin  阅读(1573)  评论(0编辑  收藏  举报

 __report_rangecheckfailure  是用来检查堆栈缓存溢出的,如果编译的时候打开GS(project property--》Configuration properties--》c/c++--》Code generation--》Buffer security check)选项时(GS编译选项解析),编译器将为你加入检测函数堆栈缓存溢出错误额外代码。具体实现在window下的运行时库文件msvcrt.dll中。而这些检查堆栈缓存溢出的代码中在msvcrt11.dll及以后版本中都会调用到__report_rangecheckfailure 函数,所以当你用vs2010及以前版本进行开发,并使用了由vs2012及以后编译器编译的库文件时,在链接的时候就会报这样的错误

解决办法:

一、用当前vs重新编译库文件;

二、编译库文件的时候关闭GS选项;

三、使用vs2012及以上版本进行开发;

 

参考链接:http://www.datazx.cn/Forums/en-US/7abc7f63-c3a6-4a55-babc-6914870d4959/unresolved-external-symbol-reportrangecheckfailure?forum=vcgeneral