我需要将一个简单的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.cmi
,big_int.cmj
,big_int.cmx
,big_int.mli
,nums.cma
,nums.cmja
等{{ 1}}。我知道Big_int存在于这些库中;但我不知道如何将它们链接到编辑中。
顺便说一下,我使用OCamlJava 2.0。
答案 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报告。