我試圖使用來自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 ;;',你就可以在函數的類型中找到可選參數:) –