5
VS2012的静态链接版本似乎存在问题。在旧系统上启动控制台应用程序会导致异常,无论何时使用流,尽管新系统根本没有问题。 要重现此错误就足够了使用Visual Studio 2012进行静态链接的msvcrt的例外
- 在VS2012
- 添加行
std::ofstream f;
或std::cout << "Hello World";
在主函数 创建一个新的控制台应用程序(包括fstream的或的iostream根据需要) - 开关v110_xp工具集(如果Windows XP需要)
- 切换到静态链接库(/ MT)
- 在旧系统上启动exe 总是存在一个exceptio ñ。
使用ofstream或cout删除行总是可以解决问题。 切换到动态链接运行时库(/ MD)总是可以解决问题。 在ofstream的情况下,使用尺寸优化(/ O1)或不优化(/ Od)而不是速度优化(/ O2)解决了问题。
有没有人有想法或提示?提前致谢。
您是否曾尝试在Windows XP的调试器下运行该应用程序以找出访问冲突发生的位置?如果您没有在Windows XP上安装Visual Studio,则可以设置[远程调试](http://msdn.microsoft.com/en-us/library/vstudio/y7f5zaaa.aspx)。 Visual Studio附带CRT实现的源代码。确保将目录添加到* VC++目录*。 – IInspectable
@IInspectable:感谢远程调试的想法。我会尝试一下,但是使用VS2012和XP进行远程调试似乎并不容易:[我可以在Windows XP上使用Visual Studio 2010远程调试器从Visual Studio 2012调试.Net 4.0应用程序吗?](http:// stackoverflow .com/questions/14444055/can-i-use-the-visual-studio-2010-remote-debugger-on-windows-xp-to-debug-a-net-4) – user2766445
@IInspectable:远程调试不起作用与Visual Studio 2012和Windows XP。 Visual Studio 2012远程调试器需要“更新版本的Windows”。我试图安装Visual Studio 2010远程调试器,并尝试从Visual Studio 2012进行连接 - 这不起作用。 – user2766445