C++调用时python时,如何传入数组做为参数?

def printList(list ):
print('Star');
print len(list)
for var in list:
print var
以上是python源码,因为只是做为测试较为简单
pFunc = PyDict_GetItemString(pDict, "printList");
if (!pFunc)
exit(0);
PyObject* list = PyList_New(3);
for (size_t i = 0; i < 3; i++)
PyList_Append(list, Py_BuildValue("i", i));
PyEval_CallObject(pFunc, list);
这是C++源码,python中的方法要求传入一个列表,我按我C++代码中的做法,将一个生成好的pyobject*的列表传入时,代码无法正常执行。这边的问题出在哪?我该怎么做?谢谢。

慕码人8056858
浏览 3293回答 2
2回答

qq_花开花谢_0

关键在于 import_array(),否则必然崩溃。#include <Python.h>#include <numpy/arrayobject.h>//必须这样写!void init_numpy(){import_array();}int fext_python_init(const char* pPath){PyObject *pArgs = NULL;Py_Initialize();init_numpy();PyObject* pArgs = PyTuple_New(1);//将c的img数组数据转换成pyobject类型的数组数据npy_intp dims[1] = {pImage->clip.width * pImage->clip.height * 4};//给定维度信息PyObject *pPyArray = PyArray_SimpleNewFromData(1, dims, NPY_CHAR, pImage->buffer.data);PyTuple_SetItem(pArgs, 1, pPyArray);……}
打开App,查看更多内容
随时随地看视频慕课网APP