PyImport_ImportModule可以导入同一个module两次吗?

代码如下,第二次进入的时候,到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);
    }
阅读 7.1k
3 个回答
新手上路,请多包涵

采用初始化语句的时候只使用一次,然后在最后结束的时候释放相关资源就可以解决。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题