42

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

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

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

我用多线程(/MT)和Win32平台编译它

这是我的#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>

谢谢

4

8 回答 8

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\"


使用 Visual Studio 2015 更新 2015 年 8 月

现在似乎有很多选择。我能够使用Visual Studio 2015 - Windows XP (v140_xp)设置在 VS2015 中编译应用程序。为了让它在 Win XP 上实际运行,我必须部署(与应用程序一起复制)msvcr100.dll用于发布版本,msvcr110.dllmsvcr100d.dll用于调试版本(注意数字 100 和 110 存在差异,还有调试库msvcr100d .dll可能无法再分发) 使用 Visual Studio 2015 面向 Windows XP

于 2013-02-07T15:03:08.330 回答
43

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

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

从 2013 年 2 月开始,它似乎得到支持/可能。请参阅下面的 noelicus 答案以了解如何。

于 2012-07-03T06:37:15.920 回答
6

虽然选择的答案是正确的,然后 noelicus 给出了关于 v110_xp 平台工具集的正确更新,但还有一个问题可能会导致这种行为。

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

因此,如果您在“配置属性 -> 链接器 -> 系统 -> 子系统”中有一个空白,您仍然会在 XP 和 Win2003 上收到“无效的 Win32 应用程序”错误,而在 Win7 上它可以正常工作而不会出现这个烦人的错误。一旦我放置了子系统:控制台,错误就消失了。

于 2015-02-27T17:22:14.007 回答
4

至少有两种解决方案:

  1. 您需要安装 Visual Studio 2010,然后从 Visual Studio 2010,查看 -> 解决方案资源管理器 -> 右键单击​​您的项目 -> 从上下文菜单中选择属性,您将获得窗口“您的项目名称”属性页 -> 配置属性 -> 常规 -> 平台工具集,选择“Visual Studio 2010 (v100)”。
  2. 您需要在Visual Studio 2012 中使用 C++ 定位的 Windows XP中描述的Visual Studio 2012 更新 1
于 2013-02-07T08:32:02.007 回答
1

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

于 2016-01-14T12:52:56.513 回答
1

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

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

QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
于 2017-06-29T02:59:57.453 回答
-1

我相信如果您的项目所针对的框架版本未安装在您要部署到的服务器上,我相信也会引发此错误。

于 2015-06-01T15:56:24.273 回答
-1

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

于 2015-10-09T14:08:52.970 回答