CFFI - Python 是否可以在 ABI 模式下回调 C 代码?
CFFI - Is Python callback for C code possible in ABI mode?
我需要为 C 代码提供回调。基本上,我需要这个来工作:
在 C:
typedef int callback_t(int i);
callback_t *callback = NULL;
在Python中:
from cffi import FFI
def py_callback(i):
return 0
ffi_builder = FFI()
lib = ffi_builder.dlopen('foobar.so')
lib.callback = py_callback
将@ffi_builder.def_extern()
添加到py_callback
抛出异常:ffi.def_extern() is only available on API-mode FFI objects
.
那么在 ABI 模式下完全可行吗?
是的,你需要 old-style callbacks。
我需要为 C 代码提供回调。基本上,我需要这个来工作:
在 C:
typedef int callback_t(int i);
callback_t *callback = NULL;
在Python中:
from cffi import FFI
def py_callback(i):
return 0
ffi_builder = FFI()
lib = ffi_builder.dlopen('foobar.so')
lib.callback = py_callback
将@ffi_builder.def_extern()
添加到py_callback
抛出异常:ffi.def_extern() is only available on API-mode FFI objects
.
那么在 ABI 模式下完全可行吗?
是的,你需要 old-style callbacks。