из функции обратного вызова sys.settrace, как передать объект фрейма в c ++, который принимает void *
Ограничения (в данной ситуации): Принудительно использовать sys.settrace (нельзя использовать PyEval_SetTrace)Также функция c ++ не может принимать код PyObject * или PyFrameObject *
C ++ (для этого создаются привязки Python SWIG):
class TEST_DECLS InterpPython{
static int TraceHook(void *frame, hwString what, void * arg);
}
Код Python:
sys.settrace(_trace_hook)
def _trace_hook(frame, event, arg):
InterpPython_TraceHook(frame,event, arg)
Результаты:
Ошибка типа: в методе 'InterpPython_TraceHook', аргумент 1 типа 'void *'