寻找一个简单的解决方案(比qsort示例更简单)。我在Linux系统上使用Python 3和gcc 4.7。我已经创建了一个共享库,我可以在Python中调用该库中的C函数。我希望能够使用Python回调函数作为参数之一从Python调用C库中的函数。这样,来自C库的函数可以调用另一个Python函数。我已经查看了几个示例(qsort示例和其他示例)并且无法使其工作。有人能告诉我一个非常简单的例子,说明它是如何从Python端和C端完成的?感谢。
答案 0 :(得分:0)
找到答案。 的Python:
import ctypes
mylib = ctypes.CDLL('sharedlib.so', use_errno=True)
...
CB_FUNC_TYPE = ctypes.CFUNCTYPE(None)
def cb():
print('Called from C library.')
cb_func = CB_FUNC_TYPE(cb)
mylib.test(cb_func)
C:
typedef void ( *callback_t )( void );
void test( callback_t cb )
{
printf("Called from Python.\n");
cb();
}
当然,如果你想要返回值和参数,这会变得有点复杂,但并不多。