我有一个调用 C 代码的库。它使用 -custom、-cclib、-l 标志编译,当我使用 ocamlc 针对库编译我的代码时,它工作正常,
但是当我使用“ocaml”顶级运行脚本时,例如:
ocaml -I /opt/godi/lib/ocaml/pkg-lib/xxxx xxx.cma myprog.ml
它说:
Error: The external function `caml_yyyy' is not available
我需要额外的参数来告诉顶层吗?
我有一个调用 C 代码的库。它使用 -custom、-cclib、-l 标志编译,当我使用 ocamlc 针对库编译我的代码时,它工作正常,
但是当我使用“ocaml”顶级运行脚本时,例如:
ocaml -I /opt/godi/lib/ocaml/pkg-lib/xxxx xxx.cma myprog.ml
它说:
Error: The external function `caml_yyyy' is not available
我需要额外的参数来告诉顶层吗?
您应该使用“ocamlmktop”构建自己的顶层:
$ ocamlmktop -custom -I /opt/godi/lib/ocaml/pkg-lib/xxxx xxx.cma -o ocaml_with_xxx
然后,您可以使用它:
$ ./ocaml_with_xxx -I /opt/godi/lib/ocaml/pkg-lib/xxxx
Note that you still need the -I so that the toplevel can find the interface files of the library that it contains.
IIRC 你不能使用-custom
在顶层编译的库。您应该编译可动态加载的存根,以便顶层可以拾取它们。这对于oasis等非常容易实现,如果手动调用 ocaml 工具则涉及更多。