The underlying data structures managed by both libraries are the same.
there is nothing on the ocaml side to prove that, so it seems in the end you will need smth like external cast : nativeint -> Fi.t and Ctypes.raw_address_of_ptr : unit ptr -> nativeint