FFIを実装したHaskellソースパッケージを(.so)動的ライブラリとしてコンパイルしました。私は、OCamlでFFI経由でエクスポートされた関数を呼び出したいと思います。 readEffects私がコンパイルしようとした次のシグネチャOCamlコードと共有ライブラリのリンク
foreign export ccall readEffects :: CString -> CString -> IO (Ptr CString)
でFFIを介してエクスポートされたHaskellソースのQuelea.Shimモジュール内の関数である
open Quelea.Shim
open Ctypes
open PosixTypes
open Foreign
let readEffects =
foreign "readEffects" (ptr char @-> ptr char @-> returning ptr string)
let effects = readEffects "csasc" "saxasxas"
print_list effects
let rec print_list = function
[] ->()
| e::l -> print_int e ; print_string " " ; print_list l
は、以下のように、このために、私は単純なドライバファイルを実装しました(main.ml)上記のファイルは、ディレクトリ/home/parallels/.cabal/lib/Quelea-0.0.1/ghc-7.6.3
ライブラリファイルlibHSQuelea-0.0.1-ghc7.6.3.so
が含まれている
ocamlc -dllpath /home/parallels/.cabal/lib/Quelea-0.0.1/ghc-7.6.3 main.ml
に従います。
エラーError: Unbound module Quelea
が表示されます。ライブラリをドライバファイルに正しくリンクするにはどうすればよいですか?