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