我有一个结构如下:
class Exprs(Structure):
_fields_ = [("func",POINTER(CMPFUNC)),
other members]
CMPFUNC= CFUNCTYPE(ExprArg, POINTER(Exprs), ExprArgList,c_int)// Prototype
是POINTER(Exprs)类型
当我尝试拨打e.contents.func(e, eArgList,0)
时,我收到错误
LP_CfunctionType对象不可调用
我使用了适当的ctypes投射。请帮我解决这个错误
答案 0 :(得分:0)
函数原型类型的构造函数直接获取地址。您可能只需要在结构定义中删除POINTER
说明符。你所写的内容相当于:
struct Exprs {
ExprArg (**func)(Exprs *, ExprArgList, int);
};
如果这真的是您想要的,那么请使用e.contents.func.contents(e, eArgList,0)