visual-studio-2012 - 是否可以在 Visual Studio 2012 中使用 VC++ 6 编译器?

标签 visual-studio-2012 compilation legacy visual-c++-6

我正在使用 Visual Studio 2012 来开发我的项目,并且我还安装了 Visual Studio 2010 - 这使我可以选择在 Visual Studio 2012(项目属性)中使用 VC++10 编译器,但我也安装了 Visual C++ 6不知何故,Visual Studio 2012 中不存在使用 VC++6 编译器的选项,我该如何添加此选项(手动)?

最佳答案

答案是肯定的。这似乎很有可能,但我无法获得 VC 6 的副本,因此我无法对其进行验证。我能够做的是让 VS 2012 使用 VC 7 (VS 2002) 来编译项目。

更新: 答案是肯定的。 OP 在评论中表示他能够通过使用此解决方案使 VC 6 工作。

配置

我这样做的方法是安装以下内容(按安装顺序):

Windows 7,SP1,32 位

我选择 Windows 7 是因为它是最早支持 VS 2012 的 Windows 版本。我使用了 32 位版本,因为 VS 2002 (VC7) 不会安装在 x64 机器上。

Visual Studio 2002,SP1

正如我所提到的,我无法获得 VC6。在微软的网站上找不到它。 Bruce's comment 下的 this question 提供了以下有用的见解:

Visual C++ 6.0 isn't available (including via MSDN) from Microsoft because it included the Microsoft JVM. See this link for details. – BruceCran



看到以上内容后,我认为安装 VS 2002 (VC 7) 是下一个最好的选择。

显然,如果您有 copy1,这就是安装 VC 6 的地方。

1我应该注意,对于任何感兴趣的人,在 Ebay 上都可以买到 VC 6。如果我以实际货币而不是积分获得报酬,我会加倍努力并获得 VC 6 的副本进行测试。

Visual Studio 2010,SP1

唯一的原因是它是 Daffodil 的要求。更多关于下面的水仙花。

Visual Studio 2012,更新 2

这是原始问题的要求。

Daffodil

这是一组配置文件,允许 VS 2010 和 VS 2012 以较旧的 VC 编译器为目标。

目前,这些是受支持的 VC 编译器版本:
  • VC 8(Visual Studio 2005)
  • VC 7.1 (Visual Studio 2003)
  • VC 7(Visual Studio 2002)
  • VC 6 (Visual Studio 6)

  • 我应该注意到,Daffodil 并未正式支持 VS 2012 作为 IDE,但它似乎确实有效。来自水仙花网站:

    Daffodil works fine in VS 2012 and later versions2 as long as VS 2010 is also installed.



    2 使用 VS 2013 和 VS 2015 时似乎存在调试问题,如下所述:
    Debugging information does not match, when using v60 platform toolset inside Visual Studio 2013

    测试

    为了测试上述内容,我在 Visual Studio 2012 中创建了一个新的 C++ Win 32 控制台项目。然后我从项目中删除了所有头文件和 cpp 文件 - 这些文件是 VS 2012 特定的,所以不需要。然后我添加了一个简单的“hello world”文件,我可以用它来测试:
    #include <iostream.h>
    
    void main()
    {
       cout << "Hello World!" << endl;   
    }
    

    按原样使用该项目(针对 VS 2012),我尝试构建它但失败了。

    接下来,我右键单击该项目并选择了属性。我选择了对话框左侧的 Configuration Properties,然后在 Platform Toolset 下的右侧选择了 v70。您会注意到 v60 还有一个选项:

    Test Project Properties

    然后我将更改保存到项目并进行了构建。它成功构建了一个exe。为了验证是否正在使用 VC 7,我在编译期间启动了 Process Monitor:

    Process Monitor during Compile

    如您所见,正在从 VC 7 目录调用编译器 cl.exe。

    最后的想法

    最初的问题涉及编译现有的 VC 6 项目。只是关于这个的几个注意事项。

    我的猜测是,要使重定向工作,您必须在 VS 2012 中创建一个新的空项目,然后添加所有现有的源文件。这样做的原因显然是两个版本的 Visual Studio 的项目格式不同。

    正如我所提到的,我使用 VC 7 而不是 6 进行了测试。我想最后一步是让 OP 使用 VC 6 尝试所有这些。希望一切正常。

    链接
  • Daffodil 在 CodePlex
  • C++ Native Multi-Targeting for VS 2010 at the C++ Team Blog
  • VS Android - 使用 VS 2010 定位 Android 的配置
  • VS-Tool - 针对各种框架的配置:Clang、EmScripten、MinGW、NACL、Python
  • 关于visual-studio-2012 - 是否可以在 Visual Studio 2012 中使用 VC++ 6 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029762/

    相关文章:

    python - PyPy 使用什么样的 JIT 编译器?

    c++ - 如何为 Linux 捆绑应用程序?

    linux - Fortran 在锁定环境中的基本单元测试

    c++ - VS2012 错误 C1107

    c++ - 将 VS 2012 迁移到 VS 2015 后 C++ 项目中的 Xmemory 错误

    c++ - Visual Studio 2012 C++ 代码覆盖合并可执行文件

    java - 使用旧版本的 JodaTime 检查 DateTime 是否在未来

    wcf - 在Windows Server 2012中安装Silverlight 4,Ria服务应用程序不工作

    c++ - 何时链接,何时包含?

    javascript - 如何将 html 解析为 React 组件?