如何使用Ctypes绑定不透明类型

时间:2016-10-08 18:42:21

标签: ocaml ctypes

我正在为Quartz Event Services编写OCaml绑定[1]。

在某些情况下,我需要绑定opaque类型,例如此代码:

typedef CGEventRef  _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo);

这里,CGEventRef__CGEvent结构上的指针,我对此一无所知。我只通过它的界面来操纵这种类型。

如何使用Ctypes绑定此类不透明类型?

链接

  1. https://developer.apple.com/reference/coregraphics/1658572-quartz_event_services?language=objc

2 个答案:

答案 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指针无关紧要,它只将内存地址作为参数。