代码如下,第二次进入的时候,到PyImport_ImportModule这一行就崩溃,还捕获不到异常
Py_Initialize();
char fileName[] = "rabbitProducer.producer";
try
{
PyObject * moduleObj = PyImport_ImportModule(fileName);
if (moduleObj)
{
char functionName[] = "produce";
PyObject * functionObj = PyObject_GetAttrString(moduleObj, functionName);
if (functionObj)
{
if (PyCallable_Check(functionObj))
{
PyObject * bytesObject = Py_BuildValue("y#", message,len);
PyObject * argsObject = PyTuple_New(1);
PyTuple_SetItem(argsObject, 0, bytesObject);
if (argsObject)
{
PyObject * resultObject = PyObject_CallObject(functionObj, argsObject);
if (resultObject)
{
Py_DECREF(resultObject);
}
else if (PyErr_Occurred())
{
PyErr_Print();
}
Py_DECREF(bytesObject);
Py_DECREF(argsObject);
}
}
Py_DECREF(functionObj);
}
//else PyErr_Clear();
Py_DECREF(moduleObj);
}
Py_Finalize();
}
catch (PyObject* ex)
{
PyException_GetTraceback(ex);
}
采用初始化语句的时候只使用一次,然后在最后结束的时候释放相关资源就可以解决。