Я рассматриваю возможность использования комбинации между кодом OCaml и C в новом приложении. Кажется, что вызывать код C из Ocaml просто:
external name : type = C-function-name
Однако, похоже, что наоборот (вызов OCaml из C) сложнее:
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.
Спасибо!