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

时间:2013-01-13 18:24:24

标签: c++ visual-studio-2012 windows-xp visual-studio-express

我最近从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;
}

有人能告诉我编译器/项目设置出错吗?

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

4 个答案:

答案 0 :(得分:1)

检查项目的“配置属性 - &gt; 链接器 - &gt; 系统 - &gt; 子系统”属性。
如果为空,请填写(/SUBSYSTEM:CONSOLE)(/SUBSYSTEM:WINDOWS)

答案 1 :(得分:1)

这有效:

  

配置属性 - &gt;链接器 - &gt;系统 - &gt;子系统=   / SUBSYSTEM:WINDOWS

     

配置属性 - &gt;一般 - &gt;平台工具集 - &gt;   SubsystemVisual Studio 2012 - Windows XP(v110_xp)

使用Visual Studio 2012 Express Update 3。

答案 2 :(得分:1)

使用GNU GCC工具链,兄弟,用mingw重新编写。 MSVS实际上只是最小化依赖性,但其中一些仍然保留在exe中。只需在gcc中编译支持完全静态链接,具有较小的exe大小和稳定的兼容性。

答案 3 :(得分:0)

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

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