2009-11-17 100 views
0

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

回答

0

我发现尽管它比SWIG稍微冗长一些,但Cython已经找到了最好的C++ wrapping,并且这是一种进入的心态。编写映射比SWIG更容易 - 因为它使用Python类型 - 但必须手工编写它们。这也是一个非常活跃的项目,邮件列表非常友好。它对NumPy也有很好的缓冲区支持。