Я пытаюсь использовать функции из небольшой автономной библиотеки fortran из OCaml. Я могу скомпилировать библиотеку с gfortran -shared mvndst.f -o sharedlib
. Вызов nm sharedlib
показывает список символов, например. ... T _mvndfn_
.Загрузить и использовать символы из общей библиотеки с ctypes в OCaml toploop
После прочтения примера примера ctypes https://github.com/ocamllabs/ocaml-ctypes/wiki/ctypes-tutorial Я попытался сделать что-то вроде let mvndfn = foreign "mvndfn" (ptr double @-> returning float)
. Символ не был найден. Может быть, неудивительно, потому что я не сказал, где искать - но я не знаю, как это сделать.
Может ли это работать вообще? Как я могу сказать, что toploop ищет эту общую библиотеку? Имеет ли значение, что это Fortran не C? Как окончательно скомпилировать и связать программу, если она работает в toploop?
(Это на OS X)
спасибо! это кажется настолько очевидным, когда вы это знаете ... – user3240588
вы можете найти необязательные аргументы в типе функции, просто набрав 'Foreign.foreign ;;' в toplevel :) –