import ctypes as c
@c.CFUNCTYPE(None, c.c_int, c.c_int)
def callback(a, b):
print("foo has finished its job (%d, %d)" % (a.value, b.value))
dll.foo(callback, a, b) # assuming a,b are ints
如果你需要stdcall
调用约定,使用WINFUNCTYPE
代替。
注意:如果foo
可以存储稍后要调用的回调,则请确保Python回调处于活动状态(如果使用示例所示的装饰器在全局级别定义了该回调就足够了- 模块在Python中实质上是不朽的除非您尝试明确删除它们)。