5

当你想从 python 调用 C 时,你编写一个这样的模块:

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

现在,我有一个问题:

我想用 C# 编写一个用于 Python 的模块。

如何让 C# 与本机 Python 交互?
(注意:我对 Python.NET 或 IronPython 不感兴趣)。

4

1 回答 1

2

我知道你可能不会喜欢这个答案,但老实说:用 C++ 编写,使用 boost::python 或直接在 Cython 中编写。

可以使用 C# 编写扩展,但您必须转换 Python 使用的数据结构,导入大量 Python C API,在托管和非托管代码之间来回编组所有内容,映射对象生命周期在 Python 和 C# 的垃圾收集器等之间,这很可能是不值得的。

您还会导致对 .NET 框架的依赖、松散的平台独立性(甚至可能使用 Mono),而通常不会带来什么好处。

如果你想在 CPython 中使用 C# 程序集,你最好的选择实际上是Python 端的pywin32的 win32com 模块,以及 .NET 端的 COM Interop。它允许您将 C# 对象公开为 COM 类,并在源代码级别添加一些属性,并轻松地将它们作为对象、事件和所有内容导入 Python。我以这种方式集成两个平台取得了很大的成功。

于 2010-10-31T22:27:02.313 回答