我正在尝试编写一个绑定到使用回调函数的C-Library。
功能界面可能如下所示:
int do_something(int a, void (*callback));
我想在python中以相同的方式映射它,所以有人可以写:
def callback(val):
print val
do_something(1, callback)
因此Python调用do_something
应该调用C函数do_something
。 Python函数callback
应该连接到C函数callback
。
我该如何处理?
非常感谢提前!
答案 0 :(得分:0)
最简单的方法应该是为每个C函数定义一个Python Wrapper并使用它们。由于C函数不能直接作为Python Callable,这是一种很好的打包方式。
另一种方法应该是在C扩展中定义自己的类,其中包括方法调用。通过这个C Python函数,您可以管理您想要的任何内容并执行与C函数回调的连接。该对象成为通用回调或子类,或......
如果你想保持C级别的所有内容,那么使用Python Capsules来传递C函数指针。但是回调是在C级而不是Python级。
更确切地说,您需要提供有关回调类型,数量,种类,域等的更多信息。我无法想到实现目标的通用方法,但我可以想象各种场景和实现。