python中的数组是很常见的,调用完python后返回一个列表,将列表的值传入C/C++中的变量
代码如下
int DRR() {
int res;
PyObject *pModule, *pFunc;
PyObject *pArgs, *pValue;
/*导入DRR模块,注意要将DRR.py放入工程文件夹中的x64文件夹下的Release文件夹下*/
pModule = PyImport_ImportModule("DRR");
/*在great.py中有一个GenerateDRR函数*/
pFunc = PyObject_GetAttrString(pModule, "GenerateDRR");
/*调用GenerateDRR函数,该函数不需要传入参数,因此在参数的位置为NULL*/
pValue = PyObject_CallObject(pFunc, NULL);
/*返回的pValue是Python中的一个列表*/
/*获取Python返回列表中每一项的值*/
if (PyList_Check(pValue)) {
int SizeOfList = PyList_Size(pValue);
for (int i = 0; i < SizeOfList; i++) {
PyObject *Item = PyList_GetItem(pValue, i);
int result;
/*若是浮点型数据需要将“i”换成"d"*/
PyArg_Parse(Item, "i", &result);
printf("%d\n", result);
Py_DECREF(Item);
}
}
return 0;
}
int main(int argc, char *argv[]) {
Py_Initialize();
DRR();
Py_Finalize;
system("pause");
return 0;
}
运行结果即可打印出列表中每个参数的值。
参考链接:
C++调用Python函数并传入传出参数