Python ctypes回调函数到SWIG

2024-09-24 04:22:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个SWIG C++函数,它希望函数指针(WNDPROC),并给它一个已经被Python函数包住的函数。ctypes.WINFUNCTYPE. 在

在我看来,这应该是兼容的,但是SWIG的类型检查抛出了一个异常,因为它不知道ctypes.WINFUNCTYPE类型实际上是WNDPROC。在

如何将我的回调传递给SWIG以便它理解它?在


Tags: 函数类型ctypesswig函数指针wndprocwinfunctype
1条回答
网友
1楼 · 发布于 2024-09-24 04:22:06

我没有一台windows机器来检查这个问题,但是我认为您需要创建一个typemap来告诉swig如何将PyObject包装器转换为WNDPROC:

// assuming the wrapped object has an attribute "pointer" which contains 
// the numerical address of the WNDPROC
%typemap(in) WNDPROC {
    PyObject * addrobj = PyObject_GetAttrString($input, "pointer");
    void * ptr = PyLong_AsVoidPt(addrobj);
    $1 = (WNDPROC)ptr;
}

相关问题 更多 >