未解析的外部符号__report_rangecheckfailure

时间:2014-08-12 21:01:09

标签: c++ visual-studio-2010 visual-studio-2012 linker-errors

我有这个简单的程序,可以创建密码提示。我安装了Visual Studio 2012和2010。它适用于2010年,但在2012年我收到此错误:unresolved external symbol __report_rangecheckfailure referenced in function main。此外,我通过将所有内容从main移动到另一个函数来修改代码。这适用于两个版本。

某些库肯定存在一些问题,但是哪一个,我该如何解决呢?感谢。

#include <conio.h>
#include <iostream>

using namespace std;

int main()
{
    int key, i;
    char pwd[64];

    printf("Enter passphrase: ");

    key=getch();        
    i=0;
    while (key!=13)
    {
        cout<<"*";      
        pwd[i++]=key;
        key=getch();
    }

    pwd[i++]='\0';

    cout<<strlen(pwd)<<endl;
    for (i=0; i<strlen(pwd); i++)
        cout<<pwd[i]<<endl;

    getch();
}

1 个答案:

答案 0 :(得分:7)

如果项目是在VS 2010中启动的,那么VS将使用MS VS 10.0 C库。如果你从2012年开始,它将使用vers。 11.0库。 VS 2012将在编译时调用__report_rangecheckfailure,但它与版本10中的版本不同。您可以在主项目菜单中将项目更新到VS 2012,或禁用缓冲区安全检查。

Further Reading on VS /gs compiler option