3

私はアプリケーションの設計に取り組んでいます。コアは C# で作成する必要がありますが、既に完成した CPython モジュール (管理されていない) も使用したいと考えています。

そのため、相互運用性 (C# から CPython メソッドを呼び出し、CPython から C# を呼び出す) に興味があります。また、問題がある場合は、C# が .NET ランタイム (マネージド) 内で実行され、CPython が直接アンマネージドで実行されるためです。

私はすでにこの問題を Google で調査しており、これらの解決策にたどり着きました。

  • DLR + "CPython 拡張機能" + おそらく "IronClad" 経由で IronPython を使用し、IronPython から CPython モジュールを呼び出し、その逆も同様です -> これらのモジュールはマネージドまたはアンマネージドで実行されますか? CPython の C# クラスとメソッドを使用したい場合、問題はありますか?
  • 「Python for .NET」を使用 -> 上記と同じ質問。

あなたはどう思いますか、どの方法が良いでしょうか?または別の解決策がありますか?

最後に、おそらく最も重要な質問ですが、上記の点を正しく理解できましたか、それとも間違っていますか?

よろしくお願いします!!

4

2 に答える 2

2

あなたはPythonを誤解していると思います。解釈された1言語です。テキストソースファイルを提供するだけで、インタープリターがそれらを実行します。

Python言語と CPython、IronPython、Jython、PyPy などの実装には違いがあります。それらのそれぞれは、実装固有の機能も追加しながら、Python 言語を可能な限り正確に実装しようとします。これは、たとえば、C# コンパイラが C++ で記述された方法に似ています。

たとえば、任意の (純粋な) Python ファイルを IronPython インタープリターで実行できます。ただし、IronPython を使用することがわかっている場合は、.NET ライブラリにアクセスできる特別な IronPython 機能を使用できます。

現在、ほとんどの Python は実装固有の機能を使用していないため、何を使用して実行しても問題ありません。ただし、一部の Python はそうします。

1さて、それは .pyc ファイルにコンパイルされます...しかし、とにかく「コンパイル」は実際には明確に定義された用語ではありません。


なぜこれがあなたにとって重要なのですか?さて、.NET フレームワークで使用したい Python ソース コードがたくさんあります。そのコードが CPython 固有の機能 (C 拡張モジュールの使用など) を使用していない場合は、IronPython で実行できます。

于 2012-04-18T13:18:46.900 に答える
1

COM 経由で Python コードを公開し、C# から呼び出します。この通り(双方向)を何度も使用しました。

于 2013-01-14T12:48:48.903 に答える