为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2019-02-07 11:07:36
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*的列表传入时,代码无法正常执行。这边的问题出在哪?我该怎么做?谢谢。
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

关键在于 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);

……

}



查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 3282 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信