从c+;第二次调用python函数时发生访问冲突+;

从c+;第二次调用python函数时发生访问冲突+;,python,c++,Python,C++,下面是我初始化与python对话的函数。下面是一个方便的函数,它调用C++中的Python函数。问题是,每当我第二次调用InitPython函数时,它都会在callpythonfunfunction(“initWithPath”)上崩溃,导致访问冲突。对于任何其他使用C++函数的C++函数都会发生同样的情况。如果我在第一次(仍然在InitPython函数中)之后的第二次调用callpython函数(“initWithPath”)。为什么会发生这种错误?在第二次调用InitPython()之前调用

下面是我初始化与python对话的函数。下面是一个方便的函数,它调用C++中的Python函数。问题是,每当我第二次调用InitPython函数时,它都会在
callpythonfunfunction(“initWithPath”)
上崩溃,导致访问冲突。对于任何其他使用C++函数的C++函数都会发生同样的情况。如果我在第一次(仍然在InitPython函数中)之后的第二次调用
callpython函数(“initWithPath”)
。为什么会发生这种错误?在第二次调用InitPython()之前调用Py_Finalize()

void InitPython(FString currentPath)
{
    Py_Initialize();
    currentPath.Append("PythonProgram/");
    PyObject *sysPath = PySys_GetObject("path");
    PyObject *path = PyString_FromString(TCHAR_TO_ANSI(*currentPath));
    int result = PyList_Insert(sysPath, 0, path);
    PySys_SetObject("path", sysPath);

    PyObject* args = PyTuple_New(1);
    PyTuple_SetItem(args, 0, PyString_FromString((const char*)"E:/Unreal Projects/IntelligentMirror/MagicMirror/PythonProgram/"));
    PyObject* res = callPythonFunction((const char*)"initWithPath", args);
    printd("Result from call: %s", *SFC(PyString_AsString(res)));

    Py_DECREF(res);
    Py_DECREF(args);
    Py_DECREF(path);
    Py_DECREF(sysPath);
}
PyObject* callPythonFunction(const char* function, PyObject* args, const char* module = "CInterface")
{
    PyObject* pModule = PyImport_ImportModule(module);
    PyObject* pDict = PyModule_GetDict(pModule);
    // pFunc is also a borrowed reference 
    PyObject* pFunc = PyDict_GetItemString(pDict, function);
    PyObject* pRet = PyEval_CallObject(pFunc, args);
    Py_DECREF(pFunc);
    Py_DECREF(pModule);
    Py_DECREF(args);

    return pRet;
}