Mono .NET是否支持并编译C++/CLI?
我们没有用于C++/CLI的编译器,它对于非常小的用户群来说是一个非常大的工作。还要考虑到C++/CLI规范本质上是有缺陷的并且是不可移植的,所以能够编译它在一般情况下不会有太大帮助。
可以编译使用MS .NET编译器和在单用这些限制运行:
与任何系统上的单声道运行,如果C++/CLI应用程序是纯管理(但然后,为什么要使用这样的一个丑陋的语言,而不是C#?)
在其他情况下在Windows上使用mono运行(C++/CLI应用程序通常不可移植并包含本机代码,因此它们只能在Windows上运行,并且对单声道的主要目标是在Linux上运行托管程序)
请注意,MS本身最终会放弃C++/CLI,所以不要投入太多,并切换到C#。
不,C++/CLI是在Mono下的not supported,可能永远不会,尽管使用MS编译器生成纯粹的IL将允许完全托管的代码在Mono下运行。
作为一种互操作语言,C++/CLI的存在使得调用非托管代码成为可能。另一种替代方法是使用P/Invoke,即使有问题,它也是well-documented。
在Mono 2.4上,您可以运行在C++/CLI下编译的C++/CLI应用程序。带有/ clr:安全开关的Visual Studio 2008。
Mono最近在CXXI的C++互操作性方面取得了一些很大的进展。
From this posting,短故事是,新CXXI技术允许C#/ NET开发者:
- 轻松消耗从C#或任何其他现有的C++类。NET 语言
- 实例化C++从C#
- 调用C++用C从C#代码方法++的类的对象
- 调用C++内联从C#代码的方法(前提是您的库编译-fkeep内联函数或您提供替代 库)
- 子类C++从与C#方法C#
- 覆盖C++方法的类
- 揭露的C++类或混合的C++/C#类的实例于C#代码和C++,好像他们是本机代码。
CXXI是谷歌夏季法典的两个夏季工作的结果,旨在提高Mono与C++语言的互操作性。
这是一个非常古老的问题,几年后会有非常有趣的答案。
截至目前tritao/CppSharp是mono/cxxi最积极开发叉子将其移回mono库在2013年,因为正在积极地开发,目前树可以在mono/CppSharp
他们的自述是here和被发现为 '发生器' 的特点是:
- 多个后端:C++/CLI和C#P /调用
- 多的ABI:安腾,MS,ARM,iOS和iOS64
- 个多平台:Windows,Mac OS X和Linux
- 多重继承的支持
- 通过用户易于扩展的语义传递
- 为STL工作进行中支持
- 虚拟表覆盖的支持(仅适用于C++/CLI)
- 强类型的自定义API和类型映射
它还配备了很多很酷的东西,AST和解析器。
“MS本身最终会丢弃C++/CLI” 你能解释一下为什么你这么想吗?这对我来说似乎不太可能。 – 2008-10-11 12:43:21
托管C++已经不受支持并停止使用,不需要很长时间就可以这样做。现在去计算一两年前与C++/CLI相关的新闻,博客文章,公告。将点连接。 – lupus 2008-10-12 08:59:57
计算与C++(来自Microsoft)相关的新闻项目,博客文章,公告,并与C#,ASP.NET等进行比较。这是否意味着MS将删除C++? – 2008-10-12 23:23:34