新しいアプリケーションで OCaml と C コードを組み合わせて使用することを検討しています。Ocaml から C コードを呼び出すのは簡単なようです。
external name : type = C-function-name
しかし、その逆 (C から OCaml を呼び出す) はより複雑なようです:
static void
call_ocaml_void (const char * name)
{ CAMLparam0 () ;
CAMLlocal1 (ostr) ;
ostr = caml_copy_string (name);
value * func = caml_named_value ("ocaml_puts") ;
if (func == NULL)
puts ("caml_named_value failed!") ;
else
caml_callback (*func, ostr) ;
CAMLreturn0 ;
} /* call_ocaml_void */
(このページの例)
特に、それにはコピーが含まれます。
両方の言語からデータ構造へのアクセスを許可できるかどうか、誰か教えてもらえますか? したがって、関数は構造体へのポインターのみを渡すことができますが、どちらの言語でもそれを読み取ることができます。
目的は、すべての操作を OCaml で行い、データを効率的な方法で C 環境に渡すことです。
ありがとう!