在python中导入C ++类?

时间:2009-11-17 17:39:57

标签: c++ python

所以..让我说我有这个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()

4 个答案:

答案 0 :(得分:5)

boost.python可让您非常有效地完成这项工作。

答案 1 :(得分:2)

SWIG也会很好用。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

Cython拥有我发现的最好的C++ wrapping,尽管它比SWIG更加冗长,并且它有点心态。编写映射比使用SWIG更容易 - 因为它使用Python类型 - 但是你必须手动编写它们。它也是一个非常活跃的项目,拥有非常友好的邮件列表。它还为NumPy提供了良好的缓冲支持。