在ctypes中继承c_void_p是否可以接受?

时间:2011-02-17 15:11:26

标签: python ctypes

我正在与一个返回不透明指针的库连接。是否可以将c_void_p子类化为在ctypes中表示它并为c_void_p的这种特殊风格提供类型检查?

1 个答案:

答案 0 :(得分:0)

执行此类型检查的简单方法可能是创建一些任意ctypes.Structure

class _Opaque(ctypes.Structure):
    pass

声明相关函数的返回类型是指向此结构的指针

lib.f.restype = ctypes.POINTER(_Opaque)

和再次接受这种指针的函数的参数类型:

lib.g.argtypes = [ctypes.POINTER(_Opaque)]

现在,ctypes确保g的参数是f之前返回的指针。 (请注意,我使用了前导_来标记_Opaque仅用于此模块。)