C++调用python模块一个接口成功,多个接口时报错
最近用到C++调用python模块的接口函数,python模块包含多个接口,每次调用第一个接口都成功,调后面的全失败。流程是这样的:
1.程序启动时
初始化python环境 :Py_SetPythonHome(szValue); Py_Initialize();
导出python模块:pModule = PyImport_ImportModule("pythoninterface");
获取该模块的所有接口:m_pFunc1 = PyObject_GetAttrString(pModule, "cplusinterface1");
m_pFunc2 = PyObject_GetAttrString(pModule, "cplusinterface2");
......
以上全部成功。
2.调取接口,执行python函数
pArg = Py_BuildValue("(s)", ptxtTemp);
PyObject* pRetVal = PyEval_CallObject(m_pFunc1, pArg);
此时调取成功,接下来需要调取python接口2,
pArg2 = Py_BuildValue("(s)", ptxtTemp2);
PyObject* pRetVal2 = PyEval_CallObject(m_pFunc2, pArg2);
方法跟上面完全一样,但是pRetVal2=0,调用失败。
请教有什么解决方法,多谢各位。
ps:我的想法是,只在程序启动时初始化一次python环境,然后开始调用python多个接口,等程序退出时再调用Py_Finalize()释放python。
不知道是不是每次调用python接口时,都要初始化一次释放一次。感觉这样做了很多重复的初始化和释放。