2009-11-17 54 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也有很好的緩衝區支持。