Python から C を呼び出したい場合は、次のようなモジュールを記述します。
http://docs.python.org/extending/extending.html
さて、質問があります:
Python で使用するモジュールを C# で作成したいと考えています。
C# をネイティブ Python と対話させるにはどうすればよいですか?
(注: Python.NET や IronPython には興味がありません)。
Python から C を呼び出したい場合は、次のようなモジュールを記述します。
http://docs.python.org/extending/extending.html
さて、質問があります:
Python で使用するモジュールを C# で作成したいと考えています。
C# をネイティブ Python と対話させるにはどうすればよいですか?
(注: Python.NET や IronPython には興味がありません)。
おそらくこの答えが気に入らないと思いますが、正直なところ、boost::pythonを使用するか、Cythonで直接C++で記述してください。
C# を使用して拡張機能を作成することは可能ですが、Python で使用されるデータ構造を変換し、大量の Python C API をインポートし、マネージド コードとアンマネージド コードの間ですべてをマーシャリングし、オブジェクトの有効期間をマップする必要があります。 Python と C# の両方のガベージ コレクターなどの間で、おそらくそれだけの価値はありません。
また、.NET フレームワークへの依存を引き起こし、プラットフォームの独立性を失います (おそらく Mono でも) が、一般的にはほとんどメリットがありません。
CPython で C# アセンブリを使用する場合、実際にはPython 側でpywin32の win32com モジュールを使用し、.NET 側で COM Interop を使用するのが最善の策です。ソース レベルでいくつかの属性を追加した COM クラスとして C# オブジェクトを公開し、それらをオブジェクトとして Python に簡単にインポートできます。このように両方のプラットフォームを統合することに多くの成功を収めました。