【发布时间】:2016-02-02 17:57:02
【问题描述】:
是否可以从 C dll 函数调用 Python 函数?
我们考虑这个 C 函数:
void foo( void (*functionPtr)(int,int) , int a, int b);
在 Python 上,我想调用 foo 并将回调设置为 Python 函数:
def callback(a, b):
print("foo has finished its job (%d, %d)" % (a.value,b.value))
dll.foo( callback, c_int(a), c_int(b) )
不幸的是,ctypes 文档对这个主题的理解很浅,上面的代码不起作用。
【问题讨论】:
-
Ctypes 回调文档:docs.python.org/3.3/library/…
-
不幸的是,该教程通常是 ctypes 的事实上的参考。 Mark 为您提供了教程链接,但肯定在 reference section 2.4 中记录了足够多的文档以超出您的尝试范围:“由这些工厂函数创建的函数原型可以以不同的方式实例化,具体取决于参数的类型和数量call ...原型(可调用),从Python可调用“创建一个C可调用函数(回调函数)”。