在OCaml中打开模块时出现的问题

在OCaml中打开模块时出现的问题,ocaml,Ocaml,我正在尝试使用“电池”模块,但是。。。它不起作用 以下是一个例子: open Batteries;; print_endline (dump [5;4;2]);; 我正在编译:opam exec ocamlc main.ml错误消息是: File "main.ml", line 1, characters 5-14: 1 | open Batteries;; ^^^^^^^^^ Error: Unbound module Batteries 电池模块似乎已安装: $ op

我正在尝试使用“电池”模块,但是。。。它不起作用

以下是一个例子:

open Batteries;;

print_endline (dump [5;4;2]);;
我正在编译:
opam exec ocamlc main.ml
错误消息是:

File "main.ml", line 1, characters 5-14:
1 | open Batteries;;
         ^^^^^^^^^
Error: Unbound module Batteries
电池模块似乎已安装:

$ opam install Batteries
[NOTE] Package batteries is already installed (current version is 3.0.0).

我遗漏了什么?

仅仅安装一个库是不够的,你必须告诉编译器你想链接它(编译器本身对opam一无所知)。OCaml有许多可用的编译和配置工具,这里只是构建使用电池的二进制文件的方法之一

ocamlbuild -pkg batteries main.native

泰克斯寻求答案。但是,我不能在“opam exec”命令下运行它<代码>$opam exec ocamlbuild-pkg batters main.native opam:未知选项'-p'添加引号不会改变outputnevermind,我刚刚发现:我需要在exec和实际命令之间加一个双破折号!是的,您可以执行
opam exec--ocamlbuild-pkg batters main.native
,但更常见的方法是使用一个
eval$(opam env)
命令启用opam开关,然后您根本不需要使用
opam exec
。如果您使用的是Emacs,那么在Tuareg模式下会有一个
opam env
命令,该命令将对Emacs环境执行相同的操作。