当前位置:  开发笔记 > 编程语言 > 正文

Mono .NET是否支持并编译C++/CLI?

如何解决《Mono.NET是否支持并编译C++/CLI?》经验,为你挑选了4个好方法。

Mono .NET是否支持并编译C++/CLI?

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



1> lupus..:

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

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

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

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

请注意,MS本身最终将丢弃C++/CLI,因此不要对它投入太多并切换到C#.


"MS本身最终将放弃C++/CLI"你能解释为什么你会这么想吗?对我来说似乎不太可能.
由于重要的可用性问题,托管C++被删除.作为互操作语言的C++/CLI不会消失,但它已经是GUI的二等公民 - WPF不会也永远不会受到支持.
我认为真正的未说出口的问题是Mono必须替换这个差距:如何编写我的C++库绑定以供C#项目使用?只说"C++/CLI糟透了,所以我们不会这样做",而不考虑还有什么用的问题.
非常有趣的是,C++已经死的评论一直持续到2011年底.C++在微软(WinRT)上做得很好,有些人现在担心它是C#有问题.我不认为.无论如何,您现在可以使用XAML开发C++应用程序,因此上面的一些评论者必须感到惊讶.
托管C++已经不受支持和停止使用,它没有花太多时间去做.现在去算一下过去一两年与C++/CLI相关的新闻,博客文章,公告.将点连接.
"管理的C++已经不受支持和停止了,它没有花太多时间去做":这就是为什么我讨厌微软,充满激情接近病态.在浪费了大约一年的时间研究这种半语言,更不用说从微软媒体上购买过高价格的Managed C++书籍所花费的无数美元,这种语言毫无意义地被悄然放弃了.VB6(虽然是一种垃圾语言,有一个巨大的追随者) - 同样被MS无情地杀死 - 尽管来自客户群的大声抗议.我欢迎我们的新领主谷歌等人
C++/CLR自VS 2017开始仍在踢
@StickittoTHEMAN我不是M $粉丝,但杀死VB6肯定是M $做得更好的事情之一 - 那个婊子很难看.至于C++ CLI,它有一个互操作的利基,但它也很难看 - 在互操作之外你需要和使用C++或享受C#.对于开发人员或M $来说,C++ CLI永远不会是任何东西 - 你应该把钱花在其他地方.

2> Justin..:

Mono最近在CXXI中与C++互操作性取得了一些相当大的进步.

从这篇文章中可以看出,新的CXXI技术允许C#/ .NET开发人员:

从C#或任何其他.NET语言轻松使用现有的C++类

从C#实例化C++对象

从C#代码调用C++类中的C++方法

从C#代码调用C++内联方法(假设您的库使用-fkeep-inline-functions编译或者您提供了代理库)

来自C#的子类C++类

使用C#方法覆盖C++方法

将C++类或混合C++/C#类的实例暴露给C#代码和C++,就好像它们是本机代码一样.

CXXI是Google夏季代码的两个夏季工作的结果,旨在提高Mono与C++语言的互操作性.


这个项目的现状是什么?它处于可用状态吗?在大约一年的时间里,回购活动中没有任何活动,而且讨论组也很勉强.

3> Rob Walker..:

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

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

我不相信Microsoft会记录在程序集中包含本机代码的格式,因此很难对此进行支持.



4> Behrooz..:

这是一个非常古老的问题,经过几年的回答非常有趣.
截至目前,tritao/CppSharp是最活跃的mono/cxxi分支,于2013年被移回单声道存储库,并且正在积极开发,目前的树可以在mono/CppSharp找到

他们的自述文件在这里,"发电机"的功能是:

多个后端:C++/CLI和C#P/Invoke

多个ABI:Itanium,MS,ARM,iOS和iOS64

多个平台:Windows,OS X和Linux

虚拟表覆盖支持

多重继承支持

通过用户传递轻松扩展语义

STL的在制品支持(仅限C++/CLI)

强类型自定义API和类型映射

它还带有很多很酷的AST东西和解析器.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有