24

好的,所以我在 Windows 7 x64 中使用 Visual Studio 2012 进行编程和编译。我的应用程序在那里运行良好,但是当我尝试从 Windows XP SP3 虚拟机执行它时,我立即得到“xxxx.exe 不是有效的 win32 应用程序”。

正在使用静态链接编译应用程序,即使用/MT. 我在 targetver.exe 中将 _WIN32_WINNT 设置为 0x0501;配置管理器设置为 Win32,链接器高级选项中的目标机器设置为 MACHINEX86。

我的 targetver.h 看起来像这样:

#include <winsdkver.h>

#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#define NTDDI_VERSION 0x0501

#include <SDKDDKVer.h>

我还尝试使用/MD.NET Framework 进行编译和安装,但这也无济于事。

我一无所知,我真的可以使用一些帮助,因为我需要让它在 Windows XP 上工作。

4

3 回答 3

24

VC++ 2012 RTM支持 Windows XP——该支持是在 2012 年晚些时候在 Visual Studio 2012 Update 1 中提供的。

可以安装以 VC++ 2012 为目标的 Windows XP的CTP,但您必须静态链接 CRT 才能进行部署。有关更多信息,请参阅此博客文章

Visual Studio 2012 Update 1 添加了对在 Windows XP 上运行使用 VC++ 2012 构建的应用程序的官方支持以及动态链接 CRT 的能力。

于 2012-10-29T22:51:24.773 回答
7

应该做两件事:

  • 配置属性常规页面,将平台工具集更改为:Visual Studio 2012 - Windows XP (v110_xp);

  • 菜单链接器系统将子系统更改为:Console/Windows

详细解释在这里: http: //software.intel.com/en-us/articles/linking-applications-using-visual-studio-2012-to-run-on-windows-xp

于 2014-02-26T11:22:19.030 回答
0

当您生成 EXE 文件时,32 位的版本将在项目文件夹bin\x86\Release中。

于 2014-10-07T18:24:24.763 回答