|在回调函数中使用ctypes POINTERc_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     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...