从 sys.settrace 的回调函数如何将帧对象传递给接受 void * 的 c++
限制(在给定情况下):强制使用 sys.settrace(不能使用 PyEval_SetTrace) 而且 c++ 函数不能接受 PyObject* 或 PyFrameObject*
C++ 代码(为此生成使用 SWIG python 绑定):
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)
结果:
TypeError:在“InterpPython_TraceHook”方法中,“void *”类型的参数 1