OCaml - это язык, отличный от C или C ++, и он использует другие соглашения о вызовах и двоичный интерфейс (ABI), чем C или C ++. Здесь нет ничего особенного в OCaml, даже код, скомпилированный с помощью различных компиляторов C ++, в общем, не совместим и не может быть импортирован.
Итак, если вы хотите вызвать библиотечную функцию, написанную на языке A, из программы, написанной на языке B, вы должны использовать bindings . Если привязок нет, вы можете написать свой собственный, хотя это не тривиальный проект, так как вам нужно решить, как преобразовать структуры данных C в структуры данных OCaml и наоборот. Если вы или кто-то другой решите пойти по этому пути, вот несколько советов. Официальная документация описывает интерфейс низкого уровня. Высокоуровневый и менее подверженный ошибкам интерфейс обеспечивается библиотекой CTypes (которая также может генерировать код C, который впоследствии можно будет скомпилировать в файл .so).
Конечно, перед написанием заглушек вы также должны научиться компилировать потоковый проект, поскольку отображаемая ошибка не имеет ничего общего с импортом кода OCaml в C или C ++ проект. , Вы должны следовать инструкциям потока homepage .