[ocaml-ctypes] Passing Caml function to C

Jeremy Yallop yallop at gmail.com
Thu Dec 28 16:44:30 GMT 2017

On 28 December 2017 at 13:05, john skaller <skaller at internode.on.net> wrote:
> There’s some machinery for this but .. well I am suspicious :)
> How can this possibly work?
> Caml functions are closures,  the only way you could pass
> a closure would be to generate a thunk. I’m suspicious that
> this doesn’t work in general. And you would need to find
> a place to put the thunk which the OS allows you to execute.

Serge Sivkov has explained how things work using OCaml's standard
Callback module.  Ctypes provides a slightly different mechanism.

The interface is the 'funptr' function that builds a typed description
of a C function pointer:


The implementation of funptr uses the closure functions in the libffi
library to dynamically generate function pointers


There's also a second implementation of funptr in progress that
provides a simpler mechanism for the case where the OCaml function to
be passed to C is known at code-generation time.

Kind regards,


More information about the Ctypes mailing list