0

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

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

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


然后我跟着Where to place a shared utility module in OCaml? ocamlfind install.

META是这样的:

name="bson"
description="A bson data structure, including encoding/decoding"
version="0.88.1"
archive(byte)="bson.cmo"
archive(native)="bson.cmx"

按照上面帖子的指示,我使用的命令是

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 ();;,它说Error: Unbound module Bson

为什么?

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

编辑

我也尝试通过命令行加载它,例如ocamlbuild -use-ocamlfind -package bson test.native,仍然无法正常工作

4

1 回答 1

1

我自己想出来的。

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

我应该使用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 评论)

于 2013-05-02T22:08:10.793 回答