Mono .NET 支持和编译 C++ / CLI 吗?

如果没有,您知道他们是否有任何支持计划?

有帮助吗?

解决方案

我们没有C ++ / CLI的编译器,对于非常小的用户群来说,这将是一项非常大的工作。还要考虑到C ++ / CLI规范本质上是有缺陷的和不可移植的,因此能够编译它在一般情况下无济于事。

您可以使用MS .NET编译器进行编译,并使用以下限制在单声道中运行:

  1. 如果C ++ / CLI应用程序是纯托管的,那么在任何系统上使用mono运行(但是,为什么要使用这种丑陋的语言而不是C#?)

  2. 在其他情况下,
  3. 在Windows上使用mono运行(C ++ / CLI应用程序通常是非便携式的并且包含本机代码,因此它们只能在Windows上运行,并且对于mono的主要目标而言是无趣的在Linux上运行托管程序)

  4. 请注意,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++ 语言的互操作性。

Mono能够运行由C ++ / CLI生成的'纯'程序集,即。那些不包含任何本机代码的。 c ++编译器支持的各种/ clr选项记录在 MSDN 上。

目前不支持编译C ++ / CLI。已经有一些关于修改GCC以发射IL的工作,但它没有完成(并且不显示活动)。请参阅此文章

我不相信Microsoft会记录在程序集中包含本机代码的格式,因此很难支持这一点。

这是一个非常古老的问题,几年后有了非常有趣的答案。
截至目前 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。

不,C ++ / CLI在Mono下是不支持,但可能永远不会生成使用MS编译器的纯IL将允许完全托管代码在Mono下运行。

作为一种互操作语言,C ++ / CLI的存在使得调用非托管代码成为可能。另一种方法是使用P / Invoke,即记录良好,但有问题。

此处并查看“Missing Languages”。但仅仅因为你无法编译并不意味着你不能运行。您可以使用框架sdk编译C ++代码,并尝试使用mono运行它。无论如何都值得尝试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top