Mono .NET 支持和编译 C++ / CLI 吗?
题
Mono .NET 支持和编译 C++ / CLI 吗?
如果没有,您知道他们是否有任何支持计划?
解决方案
我们没有C ++ / CLI的编译器,对于非常小的用户群来说,这将是一项非常大的工作。还要考虑到C ++ / CLI规范本质上是有缺陷的和不可移植的,因此能够编译它在一般情况下无济于事。
您可以使用MS .NET编译器进行编译,并使用以下限制在单声道中运行:
-
如果C ++ / CLI应用程序是纯托管的,那么在任何系统上使用mono运行(但是,为什么要使用这种丑陋的语言而不是C#?)
在其他情况下, -
在Windows上使用mono运行(C ++ / CLI应用程序通常是非便携式的并且包含本机代码,因此它们只能在Windows上运行,并且对于mono的主要目标而言是无趣的在Linux上运行托管程序)
醇>
请注意,MS本身最终将丢弃C ++ / CLI,因此不要对其投入太多并切换到C#。
其他提示
Mono 最近在 C++ 互操作性方面取得了一些相当大的进步 CXXI.
从这个帖子, 简单来说,新的 CXXI 技术允许 C#/.NET 开发人员:
- 轻松从C#或任何其他.NET语言中消耗现有的C ++类
- 从 C# 实例化 C++ 对象
- 从 C# 代码调用 C++ 类中的 C++ 方法
- 调用C#代码的C ++内联方法(前提
- 从 C# 子类化 C++ 类
- 使用 C# 方法覆盖 C++ 方法
- 将 C++ 类或混合 C++/C# 类的实例公开给 C# 代码和 C++,就像它们是本机代码一样。
CXXI 是 Google Summer of Code 两个夏天的工作成果,旨在提高 Mono 与 C++ 语言的互操作性。
这是一个非常古老的问题,几年后有了非常有趣的答案。
截至目前 tritao/CppSharp 是最积极开发的分支 单声道/cxxi 被移回 单核细胞增多症 存储库于 2013 年发布,此后一直在积极开发中,当前的树可以在以下位置找到: 单声道/CppSharp
他们的自述文件是 这里 “生成器”的功能是:
- 多个后端:C++/CLI 和 C# P/Invoke
- 多个 ABI:安腾、MS、ARM、iOS 和 iOS64
- 多个平台:Windows、OS X 和 Linux
- 虚拟表重写支持
- 多重继承支持
- 通过用户通道轻松扩展语义
- 对 STL 的正在进行中的支持(仅限 C++/CLI)
- 强类型自定义 API 和类型映射
它还附带了很多很酷的 AST 东西和一个解析器。
在Mono 2.4上,您可以运行C ++ / CLI应用程序,这些应用程序是在例如Visual Studio 2008 with / clr:safe switch。
此处并查看“Missing Languages”。但仅仅因为你无法编译并不意味着你不能运行。您可以使用框架sdk编译C ++代码,并尝试使用mono运行它。无论如何都值得尝试。