【发布时间】:2013-01-13 18:24:23
【问题描述】:
我最近从 Visual Studio Express 2010 升级到 Visual Studio 2012 Express for Windows Desktop。我知道以前缺乏针对 Windows XP 的兼容性,但我认为这已通过 Update 1(我已安装)解决。
但是,我仍然难以使用我使用 2012 Express 编译的 C++ 应用程序来定位 Win XP。我已将平台工具集设置为“Visual Studio 2012 - Windows XP (v110_xp)”,但这没有什么区别。当我尝试在我的 Windows XP 系统上运行我编译的应用程序(我通过 VirtualBox 运行 Windows XP)时,我收到一条错误消息,指出我的应用程序“不是有效的 Win32 应用程序”。
我还尝试将 CLR 支持设置为“无公共语言运行时支持”,将运行时库设置为“多线程 (/MT)”。
即使是使用以下代码的非常基本的空白 C++ 项目,我也无法让它在 XP 上运行:
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#define NTDDI_VERSION 0x0501
#include <iostream>
int main()
{
std::cout << "TEST" << std::endl;
std::cout << std::endl << std::endl << "Press ENTER to close this window.";
std::cin.get();
return 0;
}
谁能告诉我我的编译器/项目设置哪里出了问题?
附:我已经在我的 XP 虚拟机上安装了 MS VC++ 2010 和 2012 可再发行包。我用 Visual Studio Express 2010 编译的应用程序在我的 XP 虚拟机上运行良好。
【问题讨论】:
-
在 Build -> Configuration Manager 中检查您的目标平台。
-
您当然可以在 XP 上运行使用 VC 10 工具链编译的程序。这与使用 VS 2010 编译基本相同,但您没有在问题中声明您需要 VC 11 工具链。
-
@shf301 - 目标平台是 Win32。
-
@VioletGiraffe - “工具链”是指“工具集”吗?我使用了一点 C++11,所以我假设我需要使用 VC 11 来编译。我不明白为什么将工具集设置为 v110_xp 并不能解决问题。即使开始一个新项目并使用 v110_xp 的默认设置也不起作用。
-
@Colin:是的,我的错,它是工具集。您可能需要也可能不需要 v110,这取决于您需要的 C++ 11 到底是什么。没有在 XP 上尝试过 v110,所以无能为力。但是,该错误与缺少 VC++ redist 包时相同。
标签: c++ visual-studio-2012 windows-xp visual-studio-express