(.so) 동적 라이브러리로 FFI를 구현하는 하스켈 소스 패키지를 컴파일했습니다. OCaml에서 FFI를 통해 내보내는 함수를 호출하고 싶습니다. readEffects 내가 컴파일하려고 다음과 같은 서명OCaml 코드를 공유 라이브러리와 연결
foreign export ccall readEffects :: CString -> CString -> IO (Ptr CString)
로 FFI를 통해 내 보낸 하스켈 소스의 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) 위의 파일은
ocamlc -dllpath /home/parallels/.cabal/lib/Quelea-0.0.1/ghc-7.6.3 main.ml
디렉토리 /home/parallels/.cabal/lib/Quelea-0.0.1/ghc-7.6.3
라이브러리 파일 libHSQuelea-0.0.1-ghc7.6.3.so
이 들어 다음과 같습니다.
나는 Error: Unbound module Quelea
오류가 발생합니다. 라이브러리를 드라이버 파일과 올바르게 연결하려면 어떻게합니까?