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

use*_*717 40 c c++ windows visual-studio-2012

我在Visual Studio 2012 RC中有一个小的C/C++项目

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

我的应用程序在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>
Run Code Online (Sandbox Code Playgroud)

谢谢

noe*_*cus 50

这是2013年2月,我现在可以通过设置以下目标来定位VS2012中的XP:

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

Visual Studio 2012 - Windows XP(v110_xp)

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


2015年8月使用Visual Studio 2015更新

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

  • 那是有帮助的谢谢.值得注意的是,如果你转到c/C++ => Code Generation => Runtime Library并选择在你的crt中编译,你不需要重新分配dll.例如,使用/ MT选项. (8认同)

Red*_*edX 45

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

请参阅此VC++博客,了解为何以及如何使其工作.

它似乎从2013年2月起得到支持/可能.请参阅下面的noelicus答案.

  • 对未来的用户有帮助.[更新发布以支持XP](http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx) (5认同)
  • 是的,但它[最终](http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx).我正在添加这条评论,对于那些可能会在明年某个时候看到答案的人来说,这应该是可行的. (2认同)

And*_*ich 6

虽然seleted的答案是在不久前,然后noelicus给出了关于v110_xp平台工具集的正确更新,但还有一个问题可能产生这种行为.

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

所以,如果你在"配置属性 - >链接器 - >系统 - >子系统"中有一个空白,你仍然会在XP和Win2003上得到"无效的Win32应用程序"错误,而在Win7上它没有这个烦人的错误.一旦我放下子系统:控制台,错误就消失了.


Ale*_*son 5

至少有两种解决方案:

  1. 您需要Visual Studio 2010的安装位置,然后从Visual Studio 2010,查看 - >解决方案管理器 - >右键点击你的项目 - >从上下文菜单中选择属性,你会得到Windows的"项目名称"属性页 - >配置属性 - >常规 - >平台工具集,选择"Visual Studio 2010(v100)".
  2. 您需要在Visual Studio 2012中使用Windows XP Targeting with C++中描述的Visual Studio 2012 Update 1