如何使用Visual Studio 2012编译Win XP?

好的,所以我在Windows 7 x64中使用Visual Studio 2012进行编程和编译。 我的应用程序在那里工作正常,但是当我尝试从Windows XP SP3虚拟机执行它时,我立刻得到“xxxx.exe不是一个有效的win32应用程序”。

正在使用静态链接编译应用程序,即使用/ MT。 我在targetver.exe中将_WIN32_WINNT设置为0x0501; 配置管理器设置为Win32,链接器高级选项中的目标计算机设置为MACHINEX86。

我的targetver.h看起来像这样:

#include  #define _WIN32_WINNT 0x0501 #define WINVER 0x0501 #define NTDDI_VERSION 0x0501 #include  

我也尝试使用/ MD进行编译并安装.NET Framework,但这也没有用。

我很无能,我真的可以使用一些帮助,因为我需要让它适用于Windows XP。 提前致谢。

从评论中重新发布,并注意此答案仅适用于VC ++ 2012

VC ++ 2012 RTM不支持WinXP – 这种支持将在今年晚些时候推出VS2012 Update 1。

与此同时,您可以使用VC ++ 2012安装WinXP目标的CTP ,但是您必须静态链接CRT才能进行部署。 有关更多信息,请参阅此博客文章 。


编辑: Visual Studio 2012 Update 1现已发布,并增加了在Windows XP上运行使用VC ++ 2012构建的应用程序的官方支持,以及动态链接CRT的function。

  • 下载链接
  • 博客文章包含其他信息

应该做两件事:

  • 配置属性>常规页面,将Platform Toolset更改为:Visual Studio 2012 – Windows XP(v110_xp);

  • 链接器>系统。 将子系统更改为:控制台/ Windows。

详细解释如下: http : //software.intel.com/en-us/articles/linking-applications-using-visual-studio-2012-to-run-on-windows-xp

也许是解决方案可能会迟到,或者它可能不是预期的解决方案,但是当您生成.exe时,32位版本将在项目文件夹bin \ x86 \ Release中