无法链接OCaml-Java中的标准库

时间:2014-10-07 01:25:30

标签: ocaml jvm-languages

我需要将一个简单的OCaml文件转换为JAR文件,以便我可以在JVM平台上运行。

此OCaml文件需要使用Big_int模块。有这行代码

open Big_int

但是当我尝试运行ocamljava将其转换为jar文件时,它始终会返回错误Error: Reference to undefined global Big_int'`。

ocamljava -o myprog.jar source.ml

我可以在此目录中看到big_int.cmibig_int.cmjbig_int.cmxbig_int.mlinums.cmanums.cmja等{{ 1}}。我知道Big_int存在于这些库中;但我不知道如何将它们链接到编辑中。

顺便说一下,我使用OCamlJava 2.0

2 个答案:

答案 0 :(得分:0)

Erencie,

输入open Big_int仅访问big_int的已编译接口(.cmi文件),但不加载big_int的实现。

可以使用#load指令输入用户模块的实现。

在您的情况下,您想要执行以下操作:

   #load "file-name";;

这将在内存中加载由批处理编译器ocamlc生成的字节码对象文件(.cmo文件)或库文件(.cma文件)。

因此,您应该执行以下操作:

   #load "big_int.cmo";;

如果big_int的目标文件尚不存在,则应首先编译big_int.ml。

如果您有任何疑问,请与我们联系!

答案 1 :(得分:0)

您应该将“nums”库添加到命令行,如:

ocamljava nums.cmja source.ml

另请注意,OCaml-Java中“nums”的实现仅是 经过轻微测试,可能包含错误。如果你遇到一个bug,它就会 很高兴在https://github.com/xclerc/ocamljava报告。