Ocamlfind安装了我自己的lib,但在使用我的lib时仍然是`Unbound module`

时间:2013-05-02 21:52:04

标签: functional-programming ocaml

我的lib有两个文件:bson.mlbson.mli

我还有另一个使用let doc = Bson.make ();;等访问该库的测试文件,没有任何问题。

我也成功构建了它们,我得到bson.cmxbson.cmo


然后,我ocamlfind installname="bson" description="A bson data structure, including encoding/decoding" version="0.88.1" archive(byte)="bson.cmo" archive(native)="bson.cmx"

META是这样的:

ocamlfind install bson META _build/src/bson.cmx _build/src/bson.cmo src/bson.mli

根据上述帖子的说明,我使用的命令是

Removed /Users/xxx/.opam/4.00.1/lib/bson Installed /Users/xxx/.opam/4.00.1/lib/bson/bson.mli Installed /Users/xxx/.opam/4.00.1/lib/bson/bson.cmo Installed /Users/xxx/.opam/4.00.1/lib/bson/bson.cmx Installed /Users/xxx/.opam/4.00.1/lib/bson/META

它说

ocamlfind list

如果我使用bisect (version: 1.3) bson (version: 0.88.1) camlp4 (version: [distributed with Ocaml]) ,我可以看到它在那里

ocaml toplevel

好的,然后我打开#require "bson"# #require "bson";; /Users/xxx/.opam/4.00.1/lib/bson: added to search path /Users/xxx/.opam/4.00.1/lib/bson/bson.cmo: loaded 。它说

let doc = Bson.make ();;

最后,当我开始使用ocamlbuild -use-ocamlfind -package bson test.native时,它说错误:未绑定模块Bson

为什么?

我成功安装了我的lib,为什么仍然无法使用它?

修改

我也尝试通过命令行加载它,例如{{1}},仍然无法正常工作

1 个答案:

答案 0 :(得分:1)

自己想出来。

我还应该安装.cmi.o个文件。如果没有.o文件,则无法编译本机。

我应该使用ocamlfind install bson META _build/src/bson.cmx _build/src/bson.cmo src/bson.mli _build/src/bson.cmi _build/src/bson.o

而不是ocamlfind install bson META _build/src/bson.cmx _build/src/bson.cmo src/bson.mli

即,添加 _build / src / bson.cmi _build / src / bson.o (请参阅下面的@ gasche评论)