5

Python から C を呼び出したい場合は、次のようなモジュールを記述します。

http://docs.python.org/extending/extending.html

さて、質問があります:

Python で使用するモジュールを C# で作成したいと考えています。

C# をネイティブ Python と対話させるにはどうすればよいですか?
(注: Python.NET や IronPython には興味がありません)。

4

1 に答える 1

2

おそらくこの答えが気に入らないと思いますが、正直なところ、boost::pythonを使用するか、Cythonで直接C++で記述してください。

C# を使用して拡張機能を作成することは可能ですが、Python で使用されるデータ構造を変換し、大量の Python C API をインポートし、マネージド コードとアンマネージド コードの間ですべてをマーシャリングし、オブジェクトの有効期間をマップする必要があります。 Python と C# の両方のガベージ コレクターなどの間で、おそらくそれだけの価値はありません。

また、.NET フレームワークへの依存を引き起こし、プラットフォームの独立性を失います (おそらく Mono でも) が、一般的にはほとんどメリットがありません。

CPython で C# アセンブリを使用する場合、実際にはPython 側でpywin32の win32com モジュールを使用し、.NET 側で COM Interop を使用するのが最善の策です。ソース レベルでいくつかの属性を追加した COM クラスとして C# オブジェクトを公開し、それらをオブジェクトとして Python に簡単にインポートできます。このように両方のプラットフォームを統合することに多くの成功を収めました。

于 2010-10-31T22:27:02.313 に答える