我需要共享一个C++中创建的数组到Python的数组。这很好:
PyObject* arrayToPyObject(const af::array& arr)
{
// Create arrayfire array and set
PyObject* afArray = createObject("arrayfire", "Array");
PyObject* ctypes_mod = PyImport_ImportModule("ctypes");
PyObject* c_void_p = PyObject_GetAttrString(ctypes_mod, "c_void_p");
PyObject* p = PyObject_CallFunction(c_void_p, "O", PyLong_FromVoidPtr(arr.get()));
if (PyObject_SetAttr(afArray, PyUnicode_FromString("arr"), p) == 0)
{
return afArray;
}
else
{
Py_XDECREF(afArray);
return nullptr;
}
}
现在,如果我的Python脚本返回一个ARARIF FARE数组,我需要读取ARR属性并将指针取回并分配给C++数组
^{pr2}$这里的问题是PyLong_AsVoidPtr失败了类“TypeError”:需要一个整数。在
ctypes doc(16.16.1.4。基本数据类型)表示c_void_p的Python类型为int或None。显然我的情况不是这样
如何使用capi将c_void_p转换为python?在
谢谢!在
我解决了。在
ctypes类型的对象值可以从值属性中读取。在
相关问题 更多 >
编程相关推荐