所需模块' Yojson'没有位置就无法使用

时间:2018-02-12 21:44:22

标签: ocaml ocamlfind

我正在尝试使用Yojson构建一个简单的程序:main.ml文件只是

let () = exit 1;

mod.ml文件包含

open Yojson
open Yojson.Basic.Util
let rec json_to_tree json = 
        let _ = json |> member "key" in
        ()

我有一个Makefile,它首先编译.ml个文件,然后链接。为简单起见,我们假设我们运行以下三个命令:

ocamlfind ocamlc -package yojson -g  -c mod.ml
ocamlfind ocamlc -package yojson -g  -c main.ml
ocamlfind ocamlc -package yojson -g  -o inter  mod.cmo main.cmo

问题是链接部分产生以下错误:

File "_none_", line 1:
Error: Required module `Yojson' is unavailable

我不知道要解决。使用Unix模块可能会导致类似的错误,在链接时添加unix.cma会解决,但这对Yojson没有帮助。

为了完整起见,我通过opam安装了yojson,并ocamlfind list | grep yojson返回

yojson              (version: 1.3.3)
yojson.biniou       (version: 1.3.3)

1 个答案:

答案 0 :(得分:1)

这很有效。

ocamlfind ocamlc -package yojson -linkpkg -g -o inter mod.cmo main.cmo

虽然这有效,https://github.com/ocaml/dune是构建ocaml代码的更好选择。