我正在与一个返回不透明指针的库连接。是否可以将c_void_p子类化为在ctypes中表示它并为c_void_p的这种特殊风格提供类型检查?
答案 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
仅用于此模块。)