ocaml未按预期加载.cma
我试着做以下几点ocaml未按预期加载.cma,ocaml,Ocaml,我试着做以下几点 在几个ocaml模块中展开库的工作 编译库 将其加载到REPL中以试验公共API 为了执行1和2,我将与opam文件一起使用。现在,所有这些都非常适合轻松编译我的库,但是我在repl中测试它时遇到了困难 我目前的方法是启动repl并使用#load“\u build/default/.cma。这将成功执行,因为我已经#require删除了依赖项。然而,这实际上似乎并不影响repl中的绑定集。MainLibraryModule既不是作为模块绑定的,也不是由模块名限定的公共API引入
#load“\u build/default/.cma
。这将成功执行,因为我已经#require
删除了依赖项。然而,这实际上似乎并不影响repl中的绑定集。MainLibraryModule
既不是作为模块绑定的,也不是由模块名限定的公共API引入的
如果我在这里做了一些明显错误的事情,我应该如何加载这个cma
文件以便我可以使用我的库。如果有更好的方法来完成任务3(不以任何方式修改全局状态),我也愿意这样做。当您使用#load
时,加载模块的顶级名称不会作为REPL的顶级名称引入。要获得此效果,您需要打开
模块
# #load "unix.cma";;
# stat;;
Error: Unbound value stat
# Unix.stat;;
- : string -> Unix.stats = <fun>
# open Unix;;
# stat;;
- : string -> Unix.stats = <fun>
##加载“unix.cma”;;
#统计;;
错误:未绑定值统计
#Unix.stat;;
-:string->Unix.stats=
#开放式Unix;;
#统计;;
-:string->Unix.stats=
如何检查模块名称的绑定?为了使用
.cma
文件中定义的模块,REPL需要能够找到相应的.cmi
文件,这些文件是库中模块的编译接口文件
这是#目录;的用例代码>指令,将目录
添加到可能包含cmi文件的目录列表中
在您的情况下,需要在
#加载
指令:
#directory "build/path_to_cmis";;
#load "build/path_to_cma";;