我仍然沒有一個解決辦法,我只有以下解決方法:1. 我從實例創建的PyObject,並將其傳遞給Python函數。 2. Python代碼,用於將其通過SWIG產生的庫中的函數,到的PyObject轉換爲類的蟒版本。
實現:
在C++文件
MyClass myObject;
...
PyObject *parameterForPython = PyCObject_FromVoidPtr(&myObject, NULL); // step 1
PyTuple_SetItem(pyArgs, 0, parameterForPython);
PyObject_CallObject(pythonFunctionObject, pyArgs);
在大口接口文件(步驟2代碼):
%inline %{
MyClass *convertPyObjectToMyClass(PyObject * ptr) {
return (MyClass *)PyCObject_AsVoidPtr(ptr)
}
%}
在Python模塊:
def myPythonFunction(ptr):
myObject = cppmodule.convertPyObjectToMyClass(ptr) #step 2
來源
2014-12-09 21:05:54
dk7