Sml NLFFI:DynLinkage.open_lib引发DynLinkError
我正在探索NLFFI(),它在SML/NJ中的实现。“数学”示例有效,但“pdb”给出了一个错误: FFI/pdb.cm:53.5-53.21错误:用户程序中的链接时间异常 (pdb.cm):FFI/(pdb.cm):../pdbhandle.smlSml NLFFI:DynLinkage.open_lib引发DynLinkError,sml,ffi,smlnj,Sml,Ffi,Smlnj,我正在探索NLFFI(),它在SML/NJ中的实现。“数学”示例有效,但“pdb”给出了一个错误: FFI/pdb.cm:53.5-53.21错误:用户程序中的链接时间异常 (pdb.cm):FFI/(pdb.cm):../pdbhandle.sml DynLinkErrornlffi/lib/memory/linkage dlopen.sml:67.26-67.40 /usr/lib/smlnj/bin/sml:致命错误--与的未捕获异常链接 0在../cm/compile/link.sml处
DynLinkErrornlffi/lib/memory/linkage dlopen.sml:67.26-67.40 /usr/lib/smlnj/bin/sml:致命错误--与的未捕获异常链接 0在../cm/compile/link.sml处提升:357.28-357.35 我的共享库给出了相同的错误。我认为错误在动态链接所在的“pdbhandle.sml”中,因为“math”链接sml/NJ运行时库
DynLinkage.main_lib
,而“pdb”链接自己的库。我尝试手动加载库:
sml -m "\$c/internals/c-int.cm"
及
我明白了
在以下位置引发未捕获异常DynLink错误:
nlffi/lib/memory/linkage dlopen.sml:67.26-67.40
给出了相同的错误
$ ls -l /usr/lib/libgmp.so.10.2.0
-rwxr-xr-x 1根根目录488208ббббcrmk_2601:03/usr/lib/libgmp.so.10.2.0
我看到
DynLinkError
有一个参数,但SML/NJ没有显示它。(顺便说一句,这是一种正常的行为吗?)我被困在这里,因为我不知道错误消息是什么。原来我是在链接x86_64体系结构的库,但SML/NJ是x86程序。(我使用的是ArchLinux x86_64多库。)
工作
我用一个丑陋的表达式打印一个异常的参数
(DynLinkage.open_lib { name = lib_file_name, global = true, lazy = true }
; raise Div)
handle DynLinkage.DynLinkError x => x;
$ ls -l /usr/lib/libgmp.so.10.2.0
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;