【发布时间】:2020-12-15 07:51:46
【问题描述】:
我正在尝试使用 Jedi https://github.com/davidhalter/jedi 创建一个自定义 python 编辑器,并且我使用的是 c++,它运行良好,但它有点慢并且会停顿一小会儿,所以我从内部调用这些函数c++ 中的线程,但这样做有时会出现堆栈溢出错误。
这是我的代码:
//~ Create Script Instance class
PyObject* pScript = PyObject_Call(
PyObject_GetAttrString(GetJediModule(), "Script"),
PyTuple_Pack(1, PyString_FromString(TCHAR_TO_UTF8(*Source))),
NULL);
if (pScript == NULL)
{
UE_LOG(LogTemp, Verbose, TEXT("unable to get Script Class from Jedi Module"));
Py_DECREF(pScript);
ClearPython();
return;
}
//~ Call complete method from Script Class
PyObject* Result = PyObject_Call(
PyObject_GetAttrString(pScript, "complete"),
PyTuple_Pack(2, Py_BuildValue("i", Line), Py_BuildValue("i", Offset)),
NULL);
if (Result == NULL)
{
UE_LOG(LogTemp, Verbose, TEXT("unable to call complete method from Script class"));
Py_DECREF(Result);
ClearPython();
return;
}
调用PyObject_Call时发生错误,我认为是因为线程,因为当我从主线程调用函数时它工作得很好,但是堆栈没有告诉我任何有用的信息,只是python.dll中的一个错误
【问题讨论】:
标签: python c++ unreal-engine4 jedi-vim