Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Visual Studio 2012静态链接的msvcrt中出现异常_C++_Visual Studio 2012_Cpu Architecture_Msvcrt_Sse2 - Fatal编程技术网

C++ 使用Visual Studio 2012静态链接的msvcrt中出现异常

C++ 使用Visual Studio 2012静态链接的msvcrt中出现异常,c++,visual-studio-2012,cpu-architecture,msvcrt,sse2,C++,Visual Studio 2012,Cpu Architecture,Msvcrt,Sse2,VS2012的静态链接版本中似乎存在问题。无论何时使用流,在旧系统上启动控制台应用程序都会导致异常,尽管新系统根本不会造成任何问题。 要重现此错误,只需 在VS2012中创建新的控制台应用程序 添加流f的行std::或std::cout由我自己解决-我的第一个假设是错误的: 默认情况下,Visual Studio 2012使用SSE2指令。这在不支持SSE2的英特尔奔腾III或AMD Athlon XP等旧系统上会造成问题。引发无效的指令异常。 您可以使用/arch:IA32编译器选项切换SS

VS2012的静态链接版本中似乎存在问题。无论何时使用流,在旧系统上启动控制台应用程序都会导致异常,尽管新系统根本不会造成任何问题。 要重现此错误,只需

  • 在VS2012中创建新的控制台应用程序

  • 添加流f的行
    std::
    std::cout由我自己解决-我的第一个假设是错误的:

    默认情况下,Visual Studio 2012使用SSE2指令。这在不支持SSE2的英特尔奔腾III或AMD Athlon XP等旧系统上会造成问题。引发无效的指令异常。 您可以使用
    /arch:IA32
    编译器选项切换SSE2


    动态链接的msvcrt(DLL)在任何情况下都可以工作,因为它不受
    /arch
    编译器选项的影响。

    您是否尝试过在Windows XP上的调试器下运行该应用程序以找出发生访问冲突的位置?如果没有在Windows XP上安装Visual Studio,则可以设置。VisualStudio附带了CRT实现的源代码。确保将目录添加到VC++目录中。@IInspectable:感谢您提出远程调试的想法。我会尝试这样做,但使用VS2012和XP进行远程调试似乎并不容易:@IInspectable:远程调试在Visual Studio 2012和Windows XP中不起作用。Visual Studio 2012远程调试器需要“更新版本的Windows”。我尝试安装Visual Studio 2010远程调试器,并尝试从Visual Studio 2012连接,但没有成功。这基本上是我从您链接到的问题的链接中得到的。似乎需要Visual Studio 2010才能连接到Windows XP计算机。虽然您可以在同一台机器上同时安装VS 2010和VS 2012,但这肯定不太理想,即使您可以使用VS 2010调试基于VS 2012构建的应用程序。微软似乎完全低估了有多少XP安装仍在使用。