3

我有一个调用 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

我需要额外的参数来告诉顶层吗?

4

2 回答 2

3

您应该使用“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.

于 2012-07-24T11:29:08.717 回答
2

IIRC 你不能使用-custom在顶层编译的库。您应该编译可动态加载的存根,以便顶层可以拾取它们。这对于oasis等非常容易实现,如果手动调用 ocaml 工具则涉及更多。

于 2012-07-24T07:19:37.180 回答