文章类型: VC&C++
关键词: 解决,vs2015,VS2013,VS2012,生成软件,XP,运行,提示,不是有效的WIN32,应用程序
内容摘要: 解决vs2015生成软件在XP中运行时提示不是有效的WIN32应用程序

解决vs2015生成软件在XP中运行时提示不是有效的WIN32应用程序

2019/1/3 11:28:33    来源:apple    阅读:

概述:默认配置下VS2015编写的应用程序只能在Win8/Win10上运行。但幸好还保留了生成XP程序的设置项。XP和Win2003的用户还是大量存在的,我们程序软件的发布不能不考虑他们。另外XP系统是测试Win32程序一个不错的平台,系统小,启动速度快,把他安装在虚拟机上作为测试系统是很不错的。

VS2015开发XP程序的设置

解决方法:

1、项目菜单->项目属性->配置属性->常规->平台工具集,改为,选择"Visual Studio 2015 - Windows XP (v140-xp)";

如下图所示。

image.png

2、项目菜单->项目属性->链接器->系统->子系统->控制台或窗口windows(根据你的项目类型选择),第二项版本号设成5.01。

如下图所示,

image.png

实际测试的时候这两项不设置也可以,连接器和自动匹配。 
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工和,把这个链接参数设置到编译器的链接标志。

image.png

不过我的项目中并没有输入设置这一步的操作,如下图为我的项目设置,照样可以编译后运行......

image.png

现在就可以编译运行程序了


4、运行后提示下面的错误的解决办法,分别描述如下,

错误1fatal error C1083: 无法打开包括文件:“winsdkver.h”: No such file or director

或者提示,

错误2无法打开包括文件:“winapifamily.h”

或者提示,

错误3、fatal error C1083: 无法打开包括文件:“windows.h”: No such file or directory

----------------------解决思路--------------------
可以试试在 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

如下图所示,

image.png

image.png

上面的问题解决后,可能还会出现其他的错误提示,

如错误,

VS运行C++程序,编译时出错:

错误4、error lnk1158 无法运行 mt.exe 解决思路


解决思路:项目-->属性-->链接器-->清单文件,“生成清单”改为“否”

还可能出现下面的错误,

错误5、LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”

或者

错误6、LINK : fatal error LNK1104: 无法打开文件“msvcprtd.lib"

----------------------解决思路--------------------


将“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++目录--->库目录   中

之后调试通过,如下图所示,

image.png


至此,项目顺便编译完成,不再出现错误了,并且在XP操作系统下能够正常运行了。









↑ 上一篇文章:VC中的SetFont()修改字体大小及样式的问题 关键词:VC,SetFont,修改,字体,大小,样式 发布日期:2018/12/5 15:45:08
↓ 下一篇文章:vc++中的vector的用法和C#中的List的详细用法 关键词:vc,vc++,c++,vector,用法,List,C.. 发布日期:2019/1/24 15:16:01
相关文章:
error C2440 “static_cast” 无法从“void (__thiscall C* )(void)... 关键词:编译出错,VC6,VS2005,VS2008,VS2010,VS2012,VS2013,VS2015 发布日期:2016-08-03 15:33
解决“不是有效的win32应用程序”问题 关键词:解决“不是有效的win32应用程序”问题 发布日期:2016-08-05 16:28
VC程序提示 Expression:(“Buffer too small”,0) 错误 关键词:VC程序提示,Expression:(“Buffer,too,small”,0),错误 发布日期:2016-11-22 12:09
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......