ctypes POINTER(c_void_p)在回调函数中

我目前面临着ctypes的问题。 我有一个C函数foo,这样:

void** foo(int); 

我必须为foo函数定义一个回调函数。 所以:

 FOO_FUNC = CFUNCTYPE(POINTER(c_void_p), c_int) foo_c = lib.foo foo.argtypes = [c_int] foo.restype = POINTER(c_void_p) 

不幸的是,在调用函数时将此回调函数作为参数,它会给出错误: TypeError: invalid result type for callback function

我看不出问题……任何人都可以帮助我吗? 谢谢

使用c_void_p而不是POINTER(c_void_p) 。 我认为应该解决它。 另请注意,您不能将复合类型用作回调返回类型: Issue5710