use*_*445 5 c++ msvcrt cpu-architecture sse2 visual-studio-2012
在VS2012的静态链接版本中似乎存在问题.在旧系统上启动控制台应用程序会导致异常,无论何时使用流,尽管新系统根本不会造成任何问题.要重现此错误,就足够了
std::ofstream f;
或std::cout << "Hello World";
在主函数中(根据需要包括fstream或iostream)使用ofstream或cout删除行总能解决问题.切换到动态链接的运行时库(/ MD)始终可以解决问题.在ofstream的情况下,使用大小优化(/ O1)或没有优化(/ Od)而不是速度优化(/ O2)解决了问题.
有没有人有想法或提示?提前致谢.
我自己解决了 - 我的第一个假设是错误的:
Visual Studio 2012默认使用SSE2指令。这会在不支持 SSE2 的旧系统(例如 Intel Pentium III 或 AMD Athlon XP)上造成问题。抛出无效指令异常。您可以使用编译器选项切换 SSE2 。/arch:IA32
动态链接的 msvcrt (DLL) 在所有情况下都可以工作,因为它不受/arch
编译器选项的影响。
归档时间: |
|
查看次数: |
456 次 |
最近记录: |