Version française
Home     About     Download     Resources     Contact us    
Browse thread
How to pass C pointers to Caml
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Florent Monnier <monnier.florent@g...>
Subject: Re: [Caml-list] How to pass C pointers to Caml
Le lundi 1 mars 2010 04:55:00, Jianzhou Zhao a écrit :
> I have been calling OCaml code from C in my project.
> The C code has some pointers to C structures.
> I got 'seg fault' when calling the OCaml function receiving
> C structure pointers.
> 
> 18.7 at http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html
> gives the examples that pass int into OCaml. These examples work for me.
> But, Does OCaml support to pass C structure pointers to OCaml?

Yes it does. Just cast your pointer to the type value.

In this tutorial there is an example "Pointers to C structures":
http://www.linux-nantes.org/~fmonnier/OCaml/ocaml-wrapping-c.php#ref_ptr

the pointer to a C struct is wrapped on the ocaml side by an abstract type 
called "t" here, and it is provided back to C with print_t / dump_ptr.