當我的exe文件的python腳本完成後退出,我得到了一個錯誤點crt0dat.c 調用堆棧是這樣的... 是否有一些錯誤我的C++代碼或在Python代碼?退出異常與C++調用Python腳本失敗
的C++代碼:
void PythonCall::call(std::vector<double>& s,std::vector<double>& b,std::vector<double>& t,std::vector<double>& y)
{
PyObject* args = PyTuple_New(2);
PyObject* tPyList = convert2PythonList(t);
PyObject* yPyList = convert2PythonList(y);
PyTuple_SetItem(args,0,tPyList);
PyTuple_SetItem(args,1,yPyList);
PyObject* r = PyObject_CallObject(func,args);
PyObject* item;
PyObject* iter = PyObject_GetIter(r);
/*{
PyObject *errtype, *errvalue, *traceback;
PyErr_Fetch(&errtype, &errvalue, &traceback);
PyObject *s = PyObject_Str(errvalue);
char *errstr = PyString_AsString(s);
std::cout << "Python Error: " << errstr;
}*/
item = PyIter_Next(iter);
int i = 0;
PyObject* iter2 = PyObject_GetIter(item);
PyObject* item2;
while (item2 = PyIter_Next(iter2))
{
s[i] = PyFloat_AsDouble(item2);
Py_XDECREF(item2);
i++;
}
Py_XDECREF(item);
//Py_XDECREF(iter2);
item = PyIter_Next(iter);
i = 0;
iter2 = PyObject_GetIter(item);
while (item2 = PyIter_Next(iter2))
{
b[i] = PyFloat_AsDouble(item2);
Py_XDECREF(item2);
i++;
}
Py_XDECREF(item);
//Py_XDECREF(iter2);
//Py_XDECREF(iter);
Py_XDECREF(args);
Py_XDECREF(r);
Py_XDECREF(item);
Py_XDECREF(tPyList);
Py_XDECREF(yPyList);
//std::cout << "done" << std::endl;
}
和Python代碼:
def get_slope_baseLine(tl,xl):
slopes = get_slope2(tl,xl)
baselines = get_leakTime(tl,slopes)
return slopes,baselines
對不起我的英文不好...
你能發表任何代碼嗎?很難調試不可見的代碼。 – Blender
你如何期望我們知道如果你不給我們你的C++,或你的Python代碼? – mfontanini
'doexit()'很可能被調用,因爲程序因訪問衝突或其他終止條件而終止。那是什麼,完全取決於C++或Python代碼正在做什麼。我第二次評論前兩條 - 僅僅通過查看程序終止的事實,無法知道發生了什麼。 –