我需要从我的C DLL返回一个异构数据的二维数组到Python。为此,我从我的C DLL返回了一个元组的元组。它被返回为PyObject *。在我的Python代码中,这个元组的元组需要被访问为tup[0][0]表示第一行第一列,tup[0][1]表示第一行第二列,以此类推。 我使用ctypes调用C函数来返回元组的元组。然而,在Python代码中,我无法访问返回的PyObject*。
在Python脚本中,我使用以下代码 -
extern "C" _declspec(dllexport) PyObject *FunctionThatReturnsTuple()
{
PyObject *data = GetTupleOfTuples();
return data; //(PyObject*)pFPy_BuildValue("O", data);
}
在Python脚本中,我使用以下代码 -
libc = PyDLL("MyCDLL.dll")
x = libc.FunctionThatReturnsTuple()
if x != None :
print str( x[0][0] )
print str( x[0][1] )
然而我遇到了一个错误——'int'对象不可引用。我认为这是因为 x 被作为指针接收。
应该如何正确实现这个功能呢?