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

时间:2012-07-03 06:35:14

标签: c++ c windows visual-studio-2012

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

此应用程序解析argv,然后使用ShellExecute

调用另一个.exe文件

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

我用Mutli-thread(/ MT)和Win32 Platform

编译了它

这是我的#includes

#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>

由于

8 个答案:

答案 0 :(得分:50)

2013年2月,我现在可以通过设置:

来定位VS2012中的XP

项目属性 - &gt;一般 - &gt;平台工具集到:

Visual Studio 2012 - Windows XP(v110_xp)

您必须将msvcp110.dll库等与您的应用程序一起重新分发,可在此处找到:"<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


使用Visual Studio 2015更新2015年8月

现在似乎有很多选择。我能够使用 Visual Studio 2015 - Windows XP(v140_xp)设置在VS2015中编译应用程序。为了使它实际上在Win XP上运行,我必须部署(与应用程序一起复制) msvcr100.dll 用于发布版本和 msvcr110.dll msvcr100d.dll for Debug build(注意数字100和110有区别,调试lib msvcr100d.dll 可能不是可再发行的) Targeting Windows XP with Visual Studio 2015

答案 1 :(得分:44)

VS 2012应用程序无法在Windows XP下运行。

请参阅此VC++ blog了解为何以及如何使其发挥作用。

从2013年2月起,它似乎得到支持/可能。请参阅noelicus answer below了解如何。

答案 2 :(得分:6)

虽然之前的选择回答是正确的,然后noelicus提供了有关v110_xp平台工具集的正确更新,但还有一个问题可能产生这种行为。

关于问题的说明已由mahesh在他的评论中发布,我想强调这一点,因为我花了几天时间挣扎然后自己找到它。

所以,如果你在“配置属性 - &gt;链接器 - &gt;系统 - &gt;子系统”中有空白,你仍然会在XP和Win2003上获得“无效的Win32应用程序”错误,而在Win7上它没有这个恼人的错误。一旦我把子系统:console。

,错误就消失了

答案 3 :(得分:5)

至少有两种解决方案:

  1. 您需要安装Visual Studio 2010,然后从Visual Studio 2010,View - &gt; Solution Explorer - &gt;右键单击您的项目 - &gt;从上下文菜单中选择“属性”,您将获得Windows“您的项目名称”属性页 - &gt;配置属性 - &gt;一般 - &gt;平台工具集,选择“Visual Studio 2010(v100)”。
  2. 您需要Visual Studio 2012 Update 1
  3. 中描述的Windows XP Targeting with C++ in Visual Studio 2012

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

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

QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01

答案 6 :(得分:-1)

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

答案 7 :(得分:-1)

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

相关问题