C++ 使用Visual Studio 2012静态链接的msvcrt中出现异常
VS2012的静态链接版本中似乎存在问题。无论何时使用流,在旧系统上启动控制台应用程序都会导致异常,尽管新系统根本不会造成任何问题。 要重现此错误,只需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中创建新的控制台应用程序
- 添加流f的行
std::代码>或
std::cout由我自己解决-我的第一个假设是错误的: 默认情况下,Visual Studio 2012使用SSE2指令。这在不支持SSE2的英特尔奔腾III或AMD Athlon XP等旧系统上会造成问题。引发无效的指令异常。 您可以使用
编译器选项切换SSE2/arch:IA32
动态链接的msvcrt(DLL)在任何情况下都可以工作,因为它不受
编译器选项的影响。您是否尝试过在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安装仍在使用。/arch