使用Visual Studio 11编译的可执行文件有什么特别之处,导致无法在Windows XP上执行可执行文件?

Nor*_*elm 31 c++ compatibility windows-xp visual-studio visual-studio-2012

我用Visual Studio 11 Developer Preview编译我的C++源代码.我静态链接到运行时库.

生成的可执行文件无法在Windows XP上执行.当我尝试在Windows XP上执行它时,我收到错误消息"[可执行路径]不是有效的Win32应用程序.".

根据Microsoft Visual Studio 11将不支持Windows XP.

如何在Windows XP上无法执行生成的可执行文件?可执行文件中有什么特别之处吗?

And*_*ers 21

他们似乎在每个新版本的VS(NT4,2000,XP)中都不再支持旧系统.即使你根本不使用CRT,它们仍然会强制PE子系统版本为高数字.您可以通过在后期构建步骤中将数字更改回 5.0来解决此问题.只是更改这些数字应该允许exe在XP上启动,除非新的CRT使用XP上不存在的WinAPI函数.

如果你想继续使用VS11,另一种选择是使用多目标和较旧的编译器......

  • 我将向您展示缺少哪些功能(对于CRT和MFC)以及如何在这篇博客文章中解决XP上缺少这些功能的事实:http://tedwvc.wordpress.com/2012/03/11/how -to-得到视觉-C-2012-VC-11-β-静态链接-CRT和MFC的应用程序可以运行上 - 窗口XP / (5认同)

Ric*_*dle 8

Visual Studio 2012将能够在2012年晚些时候针对Windows XP:

在Visual Studio 2012中使用C++定位Windows XP

"今年秋天晚些时候,微软将提供Visual Studio 2012的更新,使C++应用程序能够以Windows XP为目标.此更新将对Visual C++ 2012编译器,运行时和库进行必要的修改,以使开发人员能够创建应用程序和DLL.在Windows XP及更高版本以及Windows Server 2003及更高版本上运行."

编辑:这已经发生了(p!)