接口(Ocaml)的假设不一致

pbp*_*pbp 16 ocaml compiler-errors

我突然开始得到这个错误.我不知道如何诊断或修复它.我是否应该通过grep bar.ml检查每个Big_int函数以防止签名Big_int.mli

File "foo.ml", line 1, characters 0-1:
Error: The files /home/bar.cmi
       and /usr/lib/ocaml/big_int.cmi make inconsistent assumptions
       over interface Big_int
Run Code Online (Sandbox Code Playgroud)

Jef*_*eld 21

通常,此消息表示最近重新编译了一个.mli文件,而不是另一个.mli文件.由于其中一个.mli文件位于您的OCaml库中,这可能意味着您已升级了OCaml安装,但从那时起就没有重新编译bar.mli.

如果你只是重新编译bar.mli会发生什么?

  • 好吧,这条消息只是为了避免版本偏斜.它没有告诉你你的代码是错误的,只是它的一部分是针对过时版本的接口编译的.如果重新编译bar.mli确实无法解决问题,我唯一能想到的就是你的OCaml安装可能搞砸了.或者您可能有两个不同的OCaml安装相互冲突? (4认同)

Ash*_*she 5

rm bar.cmi然后再试一次; 看起来它是针对不同版本的Big_int.