在 python 中导入 C++ 类?

Posted

技术标签:

【中文标题】在 python 中导入 C++ 类?【英文标题】:Import C++ classes in python? 【发布时间】:2009-11-17 17:39:56 【问题描述】:

所以.. 假设我有这个 C 函数:

PyObject* Foo(PyObject* pSelf, PyObject* pArgs)

    MessageBox(NULL, "Foo was called!", "Info", MB_OK);
    return PyInt_FromLong(0);

然后,我必须这样做:

static PyMethodDef Methods[] = 

    "Foo", Foo, METH_NOARGS, "Dummy function",
    NULL, NULL, 0, NULL
;
Py_InitModule("bar", Methods);

然后我执行我的 python 脚本.. 但是 C 函数有点烦人,它是 C++,我几乎所有东西都使用类。

那么,有什么方法可以将成员函数从一个类导入到我的 python 脚本中?

哦,顺便说一句,python 脚本看起来像这样:

import bar
from bar import *
Foo()

【问题讨论】:

【参考方案1】:

boost.python 使您能够非常有效地做到这一点。

【讨论】:

【参考方案2】:

SWIG 也可以很好地工作。

【讨论】:

【参考方案3】:

看看boost python 页面。搜索“免费功能”。

【讨论】:

【参考方案4】:

Cython 拥有我发现的最好的 C++ wrapping,尽管它比 SWIG 更冗长一些,而且它有点需要进入的心态。编写映射比 SWIG 更容易——因为它使用 Python 类型——但你必须手动编写它们。这也是一个非常活跃的项目,有一个非常友好的邮件列表。它对 NumPy 也有很好的缓冲支持。

【讨论】:

以上是关于在 python 中导入 C++ 类?的主要内容,如果未能解决你的问题,请参考以下文章