Ocaml 如何将不透明类型与Ctypes绑定

Ocaml 如何将不透明类型与Ctypes绑定,ocaml,ctypes,Ocaml,Ctypes,我正在为Quartz事件服务编写OCaml绑定[1] 在某些情况下,我需要绑定不透明类型,如以下代码: typedef CGEventRef _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo); 这里,cgrevenref是一个指针,指向一个我一无所知的\uu cgrevent结构。我只通过它的接口操作这个类型 如何使用Ctypes

我正在为Quartz事件服务编写OCaml绑定[1]

在某些情况下,我需要绑定不透明类型,如以下代码:

typedef CGEventRef  _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo);
这里,
cgrevenref
是一个指针,指向一个我一无所知的
\uu cgrevent
结构。我只通过它的接口操作这个类型

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

链接


  • 现在,我将不透明类型上的指针视为空指针

    type machport_ref = unit ptr
    let machport_ref = ptr void
    
    type event_ref = unit ptr
    let event_ref = ptr void
    

    只要不遵从指针,就可以将其作为c_void_p处理


    指针只是内存地址,不管它是称为CGEventRef还是其他什么随机指针,或者只是一个简单的空指针,它只将内存地址作为参数。

    我不确定是否有更好的方法,但这是我过去使用的方法。