未解析的外部符号__report_rangecheckfailure

Tan*_*iel 2 c++ linker-errors visual-studio-2010 visual-studio-2012

我有这个简单的程序,它会创建一个密码提示.我安装了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();
}
Run Code Online (Sandbox Code Playgroud)

Det*_*chu 7

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

进一步阅读VS/gs编译器选项