【发布时间】:2014-02-23 04:29:43
【问题描述】:
自 .Net 出现之前以来,我第一次使用 C++,我对他们的一些 C++ 产品以及他们如何命名感到困惑。
在 .Net 之前,Microsoft 支持一种称为 C++ 的语言,该语言非常接近行业标准。但是当他们引入 .Net 时,他们在 C++ 中添加了很多扩展,并将其称为“托管 C++”。
然后在 2005 年,他们放弃了它并替换为“C++/CLI”,这是一个符合微软(ISO 认证)公共语言基础结构的 C++ 版本,并且有一些语法更改(例如,^ 代替 * 用于指向到 .Net 对象等)。 C++/CLI 可以编译成平台中立的通用中间语言 (CIL)。在运行时,这由公共语言运行时 (CLR) 处理成机器代码。这是来自维基百科的图表: http://en.wikipedia.org/wiki/File:Overview_of_the_Common_Language_Infrastructure.svg
这就是我感到困惑的地方: 在 Visual Studio 2010 Professional 中,我在任何地方都看不到“C++/CLI”一词,尽管这应该是微软提供的。如果我执行 File->New->Project->Other Languages 它让我选择“Visual C++”
1.什么是“Visual C++”,它与 C++/CLI 有什么关系?
在“Visual C++”的顶层,它允许我创建一个“空项目”,在它的项目属性中,公共语言运行时设置为“无公共语言运行时支持”
2.“没有公共语言运行时支持”是否也意味着没有 CLI/CIL,因此没有 C++/CLI 语法?换句话说,该设置的状态是否确定这是“C++/CLI”还是只是普通的旧 unmanaged C++?
在“Visual C++”下面,它还有 CLR 和 General 条目。如果我创建一个 CLR 空项目,我注意到公共语言运行时设置为“公共语言运行时支持 /clr”
3. 这是 Visual C++ 空项目和 Visual C++ CLR 空项目之间的唯一区别吗?
4.什么是Visual C++“常规”空项目?
5.所有这些东西都在某处记录/解释了吗?
编辑:自从发布我的问题后,我注意到它更加复杂。公共语言运行时的默认属性在 CLR 节点下的不同模板上有所不同,从 CLR 到具有“纯”MSIL 的 CLR 到具有“安全”MSIL 的 CLR。这只是一个“公共语言运行时”设置。 Microsoft 是否会在任何地方记录这些模板?
【问题讨论】:
-
你会注意到我什至没有打开微软 C++/CX 的新蠕虫罐。
标签: c++ visual-studio-2010 visual-studio c++-cli clr