Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sml NLFFI:DynLinkage.open_lib引发DynLinkError_Sml_Ffi_Smlnj - Fatal编程技术网

Sml NLFFI:DynLinkage.open_lib引发DynLinkError

Sml 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处

我正在探索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处提升: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;