我试图使用来自OCaml的小型自包含Fortran库中的函数。我可以用gfortran -shared mvndst.f -o sharedlib
编译库。调用nm sharedlib
显示符号的列表,例如... T _mvndfn_
。在OCaml中加载和使用共享库中的ctypes中的符号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 ;;',你就可以在函数的类型中找到可选参数:) –