【问题标题】:Compile MFC program in VC11 with support for Windows XP?VC11编译MFC程序支持Windows XP?
【发布时间】:2012-04-17 02:53:27
【问题描述】:

我的软件是用 C++/MFC 编写的。我的目标是 Windows XP 及更高版本。因此,我无法升级到 Visual Studio 11,因为 MFC 11.0 不支持 Windows XP。尽管如此,我还是想从 VC11 中改进的优化器中受益。 (目前,我不需要新的 C++11 东西。)

我可以想到两种解决方案,但也许还有其他解决方案:

  1. 将 VC10 中的编译器替换为 VC11 中的编译器。
  2. 从 VC10 升级到 VC11 并使用旧的 MFC 10。

您会推荐哪种方法?

编辑: Visual Studio 2012 似乎有C++ support for XP这是否也适用于 MFC?

【问题讨论】:

    标签: visual-studio visual-studio-2010 mfc windows-xp


    【解决方案1】:

    虽然您可以将平台工具集更改为 VC10 或更早版本,但这并不完全理想。

    等待 Microsoft 的 OOB 更新(见下文),您可以使用 VC11 定位 XP/2003。您只能切换平台工具集。 CRT 使用 NT6+ 特定的 API。

    确实,我也想要 VC11 的优化。但是,我必须保持对 XP/2003 的支持。

    Microsoft 宣布,实际上在 VS2012 的 RTM 之前,将在“今年秋天晚些时候”(2012 年)的一些未决的带外更新中为 VC11 重新启用对 XP/2003 的支持。我们在这里等……

    “更新 1”的 CTP 现已发布,支持 XP 作为 VC11 的构建目标(作为区别于 VC11 的专门设置的 CRT)。可在此处下载:http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx .. 2 天前(2012 年 10 月 8 日)发布。

    【讨论】:

      【解决方案2】:

      由于 Visual Studio 2010 已支持原生多目标,因此您应该检查 Visual Studio 11 是否也支持它,

      http://blogs.msdn.com/b/vcblog/archive/2009/12/08/c-native-multi-targeting.aspx

      编辑:如果你在同一个盒子上安装了 Visual Studio 2010 和 Visual Studio 2008,你应该可以

      • 转到项目属性页,
      • 导航到配置属性下的常规选项卡,
      • 为 Platform Toolset 选项选择 Visual Studio 2010 (v100) 或 Visual Studio 2008 (v90)。

      通过这种方式,您可以在 Visual Studio 11 中编译您的项目,但使用较旧的 Visual Studio(2010 或 2008)工具集。生成的带有旧 MFC 库的可执行文件应该可以在 Windows XP 上正常运行。

      【讨论】:

      • VS 2011 专门删除了对 Windows XP 的支持,这意味着无法使用它为 XP 构建二进制文件。
      • @MarkRansom,我正在 VS11 上进行测试。在为 Windows 7 和 .NET Framework 4 安装 Windows SDK 7.1 后,我可以将 Platform Toolset 更改为 Visual Studio 2008 (v90)。我现在正在为 Windows 7 和 .NET Framework 3.5 SP1 安装 Windows SDK 7,以查看之后是否可以使用 (v90) 成功编译它。我会尽快更新答案。
      • 在最终版本中,他们重新添加了对 C++ 的支持,目标是 XP。
      • 不,他们确实没有在最终版本中重新添加它。他们宣布他们在一些尚未发布的带外更新中添加对 XP 的支持 :o。目前,您不能在 VC11 中使用原生 C++ 来定位 XP。我知道,我试过了。由于 CRT 导入 Vista 特定的 API,因此调整 PE 的 OS 主要/次要版本没有用。同样,主要和次要版本的链接器设置被覆盖。
      • 两天前发布了等待更新的 CTP,请参阅 blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx(或我对此的回答)
      【解决方案3】:

      您的软件可以坚持使用 Visual Studio 2010。

      AFAIK,您可以在同一台机器上安装 Visual Studio 2010 和 2011,而不会相互干扰。

      【讨论】:

        【解决方案4】:

        您的应用是静态链接还是动态链接到 CRT 和 MFC?如果是静态的,你可以试试这个解决方法:

        http://tedwvc.wordpress.com/2012/03/11/how-to-get-visual-c-2012-vc-11-beta-statically-linked-crt-and-mfc-applications-to-run-on-windows-xp/

        【讨论】:

          猜你喜欢
          • 2013-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多