Mono .NET は C++ / CLI をサポートしてコンパイルしますか?
そうでない場合、彼らがそれをサポートする計画があるかどうか知っていますか?
私たちは C++/CLI 用のコンパイラを持っていません。非常に小さなユーザーベースにとっては非常に大きな仕事になるでしょう。また、C++/CLI 仕様には本質的に欠陥があり、移植性がないことも考慮してください。そのため、コンパイルできても、一般的なケースではあまり役に立ちません。
MS .NET コンパイラを使用してコンパイルし、次の制限付きで mono で実行できます。
C++/CLI アプリが純粋に管理されている場合、どのシステムでも mono で実行できます (しかし、なぜ C# ではなく、このような醜い言語を使用するのでしょうか?)
それ以外の場合は、Windows で mono を使用して実行します (C++/CLI アプリは一般に移植性がなく、ネイティブ コードが含まれているため、Windows でのみ実行でき、Linux でマネージド プログラムを実行するという mono の主な目的には興味がありません)。
MS 自体は最終的に C++/CLI を廃止することに注意してください。
Mono は最近、 CXIでの C++ 相互運用性に関してかなり大きな進歩を遂げました。
この投稿から、短い話として、新しい CXI テクノロジにより、C#/.NET 開発者は次のことができるようになります。
CXI は、Mono と C++ 言語との相互運用性を改善するために、Google の Summer of Code からの 2 つの夏の作業の結果です。
Monoは、C ++/CLIによって生成された「純粋な」アセンブリを実行できます。ネイティブコードを含まないもの。C++コンパイラでサポートされているさまざまな/clrオプションは、MSDNに記載されています。
現在、C ++/CLIのコンパイルはサポートされていません。ILを放出するようにGCCを変更する作業がいくつかありましたが、完全ではありません(アクティブに見えません)。この記事を参照してください。
Microsoftがアセンブリにネイティブコードを含めるための形式を文書化しているとは思わないので、これをサポートすることは困難です。
これは非常に古い質問で、数年後に非常に興味深い回答が得られます。
現在、tritao/CppSharpはmono/cxxiの最も活発に開発されているフォークであり、2013 年にmonoリポジトリに戻され、それ以来活発に開発されています。現在のツリーはmono/CppSharpにあります。
彼らの readme はここにあり、「ジェネレーター」の機能は次のとおりです。
また、多くのクールな AST とパーサーも付属しています。
いいえ、C++/CLI はMonoではサポートされておらず、今後もサポートされない可能性がありますが、MS コンパイラを使用して純粋な IL を生成すると、完全に管理されたコードを Mono で実行できます。
相互運用言語として C++/CLI が存在し、アンマネージ コードを呼び出すことができます。他の代替手段は、問題はあるものの十分に文書化されている P/Invoke を使用することです。
ここに行き、「MissingLanguages」の下を見てください。しかし、コンパイルできないからといって、実行できないという意味ではありません。フレームワークSDKを使用してC++コードをコンパイルし、monoを使用して実行してみることができます。とにかく試す価値があります。