用于Windows桌面的MS Visual Studio 2012 Express - 针对Windows XP

Col*_*lin 6 c++ windows-xp visual-studio-express visual-studio-2012

我最近从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;
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我我的编译器/项目设置出错了吗?

我在我的XP虚拟机上安装了MS VC++ 2010和2012可再发行组件包.我使用Visual Studio Express 2010编译的应用程序在我的XP虚拟机上运行良好.

Ben*_*mer 0

该消息表明您的构建未生成 32 位应用程序 - 例如,如果它是版本相关的 API,您会看到另一个错误,表明找不到该符号。由于您已在配置管理器中表明您正在使用正确的目标平台,因此请检查您的属性资源管理器以确保您没有冲突的参数或默认值。如果您看到带有选项 /MACHINE:X64 的链接,那么您就发现了问题。

如果这不起作用,我想您可以尝试运行 Sysinternals 进程资源管理器来查看哪个 cl/link 实际上是使用哪些参数启动的。希望有帮助。