概述:默认配置下VS2015编写的应用程序只能在Win8/Win10上运行。但幸好还保留了生成XP程序的设置项。XP和Win2003的用户还是大量存在的,我们程序软件的发布不能不考虑他们。另外XP系统是测试Win32程序一个不错的平台,系统小,启动速度快,把他安装在虚拟机上作为测试系统是很不错的。
VS2015开发XP程序的设置
解决方法:
1、项目菜单->项目属性->配置属性->常规->平台工具集,改为,选择"Visual Studio 2015 - Windows XP (v140-xp)";
如下图所示。
2、项目菜单->项目属性->链接器->系统->子系统->控制台或窗口windows(根据你的项目类型选择),第二项版本号设成5.01。
如下图所示,
实际测试的时候这两项不设置也可以,连接器和自动匹配。
3、C/C++->链接器->命令行,输入相应的命令行,这一步非常关键,否则会出现“不是有效的win32应用程序”提示;
根据程序设计的运行环境是图形窗口还是命令行窗口设置不同的命令行选项,如果运行环境是命令行窗口则使用如下命令:
/SUBSYSTEM:CONSOLE,”5.01” (for Win32用在32位平台)
/SUBSYSTEM:CONSOLE,”5.02” (for x64用在64平台)
如果运行环境是图形窗口则使用如下命令:
/SUBSYSTEM:WINDOWS,”5.01” (for Win32用在32位平台)
/SUBSYSTEM:WINDOWS,”5.02” (for x64用在64平台)
如果你用NMAKE工和,把这个链接参数设置到编译器的链接标志。
不过我的项目中并没有输入设置这一步的操作,如下图为我的项目设置,照样可以编译后运行......
现在就可以编译运行程序了
4、运行后提示下面的错误的解决办法,分别描述如下,
或者提示,
或者提示,
----------------------解决思路--------------------
可以试试在 INCLUDE 目录增加:$(WindowsSDK_IncludePath),如果存在,可能还需要再增加其他的包含目录,
譬如我的项目下面增加了如下的目录路径,
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt
如下图所示,
上面的问题解决后,可能还会出现其他的错误提示,
如错误,
VS运行C++程序,编译时出错:
错误4、error lnk1158 无法运行 mt.exe 解决思路,
解决思路:项目-->属性-->链接器-->清单文件,“生成清单”改为“否”
将“kernel32.lib”文件所在路径(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib)
以及“msvcprtd.lib”文件所在路径(C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib)
添加到项目的资源管理器--->VC++目录--->库目录 中
之后调试通过,如下图所示,
至此,项目顺便编译完成,不再出现错误了,并且在XP操作系统下能够正常运行了。