我正在为Quartz Event Services编写OCaml绑定[1]。
在某些情况下,我需要绑定opaque类型,例如此代码:
typedef CGEventRef _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo);
这里,CGEventRef
是__CGEvent
结构上的指针,我对此一无所知。我只通过它的界面来操纵这种类型。
如何使用Ctypes绑定此类不透明类型?
链接
答案 0 :(得分:1)
现在我将opaque类型的指针视为void指针。
type machport_ref = unit ptr
let machport_ref = ptr void
type event_ref = unit ptr
let event_ref = ptr void
答案 1 :(得分:1)
只要您不依赖指针,就可以将其作为c_void_p处理。
指针只是内存地址,如果它被称为CGEventRef或SomeOtherRandomPointer或只是一个简单的void指针无关紧要,它只将内存地址作为参数。