【发布时间】:2014-08-07 13:19:13
【问题描述】:
我正在尝试编写与使用回调函数的 C 库的绑定。
函数接口可能如下所示:
int do_something(int a, void (*callback));
我想在 python 中以相同的方式映射它,以便有人可以编写:
def callback(val):
print val
do_something(1, callback)
所以 Python 调用 do_something 应该调用 C-Function do_something。并且 Python 函数 callback 应该连接到 C-Functions callback。
我应该如何处理这个问题?
提前非常感谢!
【问题讨论】:
-
您的回调函数指针的
C语法不正确。应该是:void (*callback)(int). -
好的,没错。我正在使用 -fpermissive 标志,因为我要链接到的库需要这个...
-
我不确定它是否应该被声明为 C 函数指针;可能有一些“python函数指针”类型。
-
好吧,我得到的是一个 PyObject*,它可以被 PyObject_CallObject 调用,但这不是我可以传递给 C-Function do_something 的东西,它需要一个 C 回调:-(