functional programming - Ocamlfind installed my own lib but still `Unbound module` when using my lib -
my lib has 2 files: bson.ml
, bson.mli
.
i have test file use let doc = bson.make ();;
etc access library , fine without problem.
i build them , bson.cmx
, bson.cmo
i followed where place shared utility module in ocaml? ocamlfind install
.
the meta this:
name="bson" description="a bson data structure, including encoding/decoding" version="0.88.1" archive(byte)="bson.cmo" archive(native)="bson.cmx"
as instructed post above, command used
ocamlfind install bson meta _build/src/bson.cmx _build/src/bson.cmo src/bson.mli
it said
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
if use ocamlfind list
, can see there
bisect (version: 1.3) bson (version: 0.88.1) camlp4 (version: [distributed ocaml])
ok, open ocaml toplevel
, #require "bson"
. said
# #require "bson";; /users/xxx/.opam/4.00.1/lib/bson: added search path /users/xxx/.opam/4.00.1/lib/bson/bson.cmo: loaded
finally, when begin use let doc = bson.make ();;
, sayd error: unbound module bson.
why?
i installed lib, why still can not use it?
edit
i tried load via command line such ocamlbuild -use-ocamlfind -package bson test.native
, still not work
figured out myself.
i should install .cmi
, .o
files. if without .o
file, native cannot compiled.
i should use ocamlfind install bson meta _build/src/bson.cmx _build/src/bson.cmo src/bson.mli _build/src/bson.cmi _build/src/bson.o
instead of ocamlfind install bson meta _build/src/bson.cmx _build/src/bson.cmo src/bson.mli
i.e., add _build/src/bson.cmi _build/src/bson.o (please see @gasche's comment below)
Comments
Post a Comment