【问题标题】:Using Visual C++ with a different C++ compiler?将 Visual C++ 与不同的 C++ 编译器一起使用?
【发布时间】:2011-09-27 15:35:16
【问题描述】:

我喜欢 Visual Studio IDE。我已经习惯了,发现它是我尝试过的最好的 IDE。我们还发现这里越来越多地使用 C#/.NET。

但是,在underwhelming announcement regarding C++11 features in VS11 之后,我正在考虑更换编译器

似乎Intel compiler fully integrates with VS 但这并不意味着它会编译我们的Windows 代码。我不知道我会如何尝试 g++ 或 clang

VS 能否真正有效地与不同的 C++ 编译器编译 Windows 代码,即使用各种 Win32 / MFC / COM 东西的遗留代码?

【问题讨论】:

  • 为什么英特尔编译器不编译您的 Windows 代码?
  • 英特尔的 C++ 编译器不兼容 Visual C++ 的某些功能:阅读compatibility chart。其中一件大事是“属性代码”,MFC 可能会使用它,但英特尔的编译器不支持它。
  • 关于我的C++11 features link:Herb Sutter 做了一些解释right at the start of this video

标签: c++ visual-studio visual-c++ compiler-construction


【解决方案1】:

取决于您对 Microsoft 专有扩展的使用程度。像#pragma once 这样的东西往往会得到所有主要编译器的支持,但更奇怪的 COM 东西(例如,#import 和任何 C++/CLI)可能不会。不知道 MFC 是否会在新编译器下构建,但您可能必须静态链接它或发布您自己的 DLL; G++ 肯定使用与 MSVC 不同的修饰方案。

我不确定替换 cl.exe 并保持 vcproj 文件完整(尽管有些编译器确实这样做)是多么容易,但总有 Makefile 项目。

【讨论】:

  • +1 专门用于提及 MFC-DLL 和不同的修改方案
【解决方案2】:

我从未真正使用过英特尔 C++ 编译器,但我看不出它为什么不能编译 VC++ 所做的代码。 Here 是英特尔官方文档。

【讨论】:

    【解决方案3】:

    我使用 Visual Studio 2008 和 Makefile 项目进行交叉编译;没有理由你不能用不同的 Windows 编译器做同样的事情。

    【讨论】:

    • 如果你交叉编译,你可能没有任何 Win32 或 MFC 的东西,对吧? (注意:如果代码可编译,我不介意 makefile 项目。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多