python - 如何在 Python 中创建 CFuncType

标签 python callback ctypes

我需要传递一个回调函数,它是 CFuncType(ctypes.CFUNCTYPE 或 ctypes.PYFUNCTYPE...)。

如何将 python 函数转换为 CFuncType 或如何在 python 中创建 CFuncType 函数。

最佳答案

我忘记了 ctypes 有多棒:

以下是从http://docs.python.org/library/ctypes.html复制的

所以我们的回调函数接收指向整数的指针,并且必须返回一个整数。首先我们为回调函数创建类型:

CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))

对于回调函数的第一次实现,我们简单地打印我们得到的参数,并返回0(增量开发;-):

 def py_cmp_func(a, b):
     print "py_cmp_func", a, b
     return 0

创建 C 可调用回调:

cmp_func = CMPFUNC(py_cmp_func)

关于python - 如何在 Python 中创建 CFuncType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2729223/

相关文章:

javascript - 如何将现有回调 API 转换为 Promise?

python - 结构定义中带有指针的枚举

python - 使用 ctypes 从 python 访问 C 中的全局指针

python - 使用 xPath 从 pom 中提取版本号时遇到问题

python - 按顺序执行pytest

Python CGIHTTPServer 崩溃并显示 "OSError: [Errno 13] Permission denied"

c - 如何使用 Swift 返回 UnsafePointer <CChar> 和 UnsafePointer <CUnsignedInt>

python - 使用 Sphinx 通过命令行参数记录脚本时出现异常

ios - 直接调用音频单元而不是回调 iOS

python - 使用 numpy/ctypes 公开 C 分配的内存缓冲区的更安全方法?