如何在Microsoft Visual Studio C ++中定位Windows XP

我在Windows 8.1上使用Microsoft Visual Studio 2015。 我想编译一个针对Windows XP的程序。 我已经在谷歌和其他类似的问题上查找过,但没有任何帮助。 在解决scheme设置中,目标平台工具集设置为Windows XP,但目标平台版本中没有Windows XP选项。 我读过https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745 ( v= vs.85) .aspx (使用Windows标题),并将这些行添加到我的程序中:

#define WINVER _WIN32_WINNT_WINXP #define _WIN32_WINNT _WIN32_WINNT_WINXP #define NTDDI_VERSION NTDDI_WINXP 

但它仍然不起作用。 它说它找不到“MSVCP140.dll”。 我得到这个DLL后,开始抱怨找不到“VC140.dll”。 之后是“ucrtbased.dll”,然后最后是“api-ms-win-core-string-11-1-0.dll”,我甚至没有在我的Windows 8.1电脑上安装它。 该程序可以在Windows 8.1上运行,但不能在Windows XP上运行。 我能做些什么来使程序在Windows XP上运行?

为了与VS 2015(或VS 2012 / VS 2013)构建Windows XP兼容的EXE,您必须使用v140_xp平台工具集,而不是默认的v140平台工具集。

查看您的项目属性,常规页面:

属性页

这是因为默认平台工具集使用Windows 8.1 SDK(或者您可以选择加入Windows 10 SDK),并且这仅支持为Windows Vista或更高版本构建应用程序。 当您选择v140_xp平台工具集时,您正在使用Windows 7.1 SDK版本,该版本是支持以Windows XP或Windows server 2003为目标的最后一个版本。

请注意,Visual Studio可以定位Windows XP Service Pack 3或Windows server 2003 Service Pack 2. C / C ++运行时与旧版本的Windows不兼容。

如果您在应用程序中使用DirectX,则会产生一些深远的影响,因为Windows 7.1 SDK和Windows 8 SDK之间的许多变化。 详情请看这个帖子 。

使用VS 2015,您还需要在“自定义安装”选项或通过程序和功能/ Microsoft Visual Studio 2015 /更改… /修改中选择Windows XP支持:

修改

这听起来像程序在您的开发机器上运行良好(Windows 8.1 + MSVS 2015),但不能在XP机器上运行。

解决方案:您必须包含MSVC运行时和您的.exe。

看看这里: 部署原生桌面应用程序(Visual C ++)

和这里: 为Visual Studio 2015的Visual C ++可再发行组件 。