我正在考虑在新应用程序中使用 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 环境。
谢谢!