xxxxxx.exe不是有效的Win32应用程序

我有Visual Studio 2012 RC中的小型C / C ++项目

此应用程序分析argv,然后用ShellExecute调用另一个.exe文件

我的应用程序在Windows7上完美运行,但是在Windows XP x86 trhows上不是有效的Win32应用程序错误。

我用Mutli-thread(/ MT)和Win32 Platform编译了它

这是我的#包括

 #include <string> #include <iostream> #include <Windows.h> #include <fstream> #include <cstdio> #include <vector> #include <windowsx.h> #include <shlobj.h> #include <stdio.h> #include <tchar.h> #include <direct.h> 

谢谢

VS 2012应用程序不能在Windows XP下运行。

看看这个VC ++博客为什么以及如何使它工作。

这似乎从2013年2月支持/可能。见下面的noelicus答案如何。

现在是2013年2月,我现在可以通过设置VS2012来定位XP:

项目属性 – >常规 – >平台工具集

Visual Studio 2012 – Windows XP(v110_xp)

您将不得不重新分配msvcp110.dll库等与您的应用程序,它们在这里find: "<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


2015年8月更新Visual Studio 2015

现在似乎有相当多的select。 我能够使用Visual Studio 2015 – Windows XP(v140_xp)设置在VS2015中编译应用程序。 为了使它在Win XP上实际运行,我必须部署(复制应用程序) msvcr100.dll用于发布版本和msvcr110.dllmsvcr100d.dll用于debugging版本(注意在数字100和110有区别,也debugginglib msvcr100d .dll可能不可再发行) 使用Visual Studio 2015定位Windows XP

至less有两个解决scheme:

  1. 你需要安装Visual Studio 2010,然后从Visual Studio 2010中,查看 – >解决scheme资源pipe理器 – >右键单击你的项目 – >从上下文菜单中select属性,你会得到窗口“你的项目名称”属性页面 – >configuration属性 – >常规 – >平台工具集,select“Visual Studio 2010(v100)”。
  2. 您需要在Windows XP中使用Visual Studio 2012中的C ++进行定位的Visual Studio 2012 Update 1

虽然select的答案是在恰当的时间,然后noelicus给了正确的更新关于v110_xp平台工具集,仍然有更多的问题可以产生这种行为。

mahesh在他的评论中已经提出了一个关于问题的提示,我想强调这一点,因为我已经花了几天的时间挣扎,然后自己find它。

所以,如果你在“configuration属性 – >链接器 – >系统 – >子系统”中有一个空白,你仍然会在XP和Win2003上得到“无效的Win32应用程序”的错误,而在Win7上它没有这个恼人的错误。 一旦我把子系统:控制台,错误消失了。

对我来说,这有助于:1.configuration属性/常规/平台工具集= Windows XP(V110_xp)2. C / C ++预处理器定义,添加“WIN32”3.链接器/系统/最低要求版本= 5.01

在运行使用Qt 5.7.0 (MSVC 2013)的静态版本构build的应用程序时,我在Windows XP上遇到了同样的问题。

将以下行添加到项目的.pro文件解决了它:

 QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01 

我相信如果您的项目的目标是未部署在服务器上的框架版本,也会抛出此错误。

我在使用PowerShell启动VS2013 32位控制台应用程序时遇到了这个问题,在cmd下启动它并没有发出这个问题。