2014-09-11 3 views
1

SML/NJ에서 구현 한 NLFFI (No Longer Foreign Function Interface)를 탐색 중입니다. "수학"예제가 작동하지만 "pdb"가 오류를 발생시킵니다.NLFFI : DynLinkError를 발생시키는 DynLinkage.open_lib

FFI/pdb.cm:53.5-53.21 Error: link-time exception in user program (pdb.cm):FFI/(pdb.cm):../pdbhandle.sml
DynLinkErrornlffi/lib/memory/linkage-dlopen.sml:67.26-67.40

/usr/lib/smlnj/bin/sml: Fatal error -- Uncaught exception Link with 0 raised at ../cm/compile/link.sml:357.28-357.35

내 공유 라이브러리에서 같은 오류가 발생합니다. 나는 오류가 "pdbhandle.sml"에있는 것 같아요. "수학"이 SML/NJ 런타임 라이브러리 DynLinkage.main_lib을 링크하고 "pdb"가 자체 라이브러리를 링크하기 때문입니다.

sml -m "\$c/internals/c-int.cm" 

DynLinkage.open_lib { name = "./pdb.so", global = true, lazy = true }; 

내가

uncaught exception DynLinkError raised at: nlffi/lib/memory/linkage-dlopen.sml:67.26-67.40

DynLinkage.open_lib { name = "/usr/lib/libgmp.so.10.2.0", global = 
true, lazy = true }; 

같은 오류를 제공

를 얻을 : 나는 수동으로 라이브러리를로드하려고 노력했다.

$ ls -l /usr/lib/libgmp.so.10.2.0 

-rwxr-xr-x 1 root root 488208 бер 26 01:03 /usr/lib/libgmp.so.10.2.0

나는 DynLinkError 인수를 가지고 있음을 볼 수 있지만, SML/NJ는 표시되지 않습니다. (BTW, 그것은 정상적인 행동입니까?) 오류 메시지가 무엇인지 모르기 때문에 여기에 붙어 있습니다.

답변

1

내가 x86_64 아키텍처 용 라이브러리를 링크했지만, SML/NJ는 x86- 프로그램입니다. (저는 ArchLinux x86_64 Multilib을 사용하고 있습니다.)

DynLinkage.open_lib { name = "/usr/lib32/libgmp.so.10.2.0" 
    , global = true, lazy = true }; 

작품입니다.

나는 못생긴 식으로 예외의 인수를 인쇄

(DynLinkage.open_lib { name = lib_file_name, global = true, lazy = true } 
    ; raise Div) 
    handle DynLinkage.DynLinkError x => x; 
관련 문제