2014-10-07 63 views
1

我需要将一个简单的OCaml文件转换为JAR文件,以便我可以在JVM平台上运行。未能链接OCaml-Java中的标准库

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

open Big_int 

但它总是返回我此行的错误Error: Reference to undefined global Big_int'`的,当我尝试运行ocamljava将其转化成jar文件。

ocamljava -o myprog.jar source.ml 

我能看到big_int.cmibig_int.cmjbig_int.cmxbig_int.mlinums.cmanums.cmja,等这个目录/Users/myname/.opam/ocamljava-2.0-alpha2/lib/ocaml上。我知道Big_int存在于这些库中,但我不知道如何将它们链接到汇编。

顺便说一句,我使用​​。

回答

0

Erencie,

进入open Big_int只访问了big_int编译接口(.cmi文件),但不加载的big_int实施。

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

在你的情况,你要做到以下几点:

#load "file-name";; 

这会在内存中加载由该批次生产的字节码对象文件(.cmo文件)或库文件(.cma文件)编译器ocamlc。

因此,你应该做到以下几点:

#load "big_int.cmo";; 

如果big_int对象文件不存在,你应该先编译big_int.ml。

如果您有任何问题,请让我知道!

0

你或许应该在“NUMS”库添加到命令行,如:

ocamljava nums.cmja source.ml 

另外请注意,“NUMS”的OCaml中的Java实施至今只有 轻轻测试,可能包含错误。如果您遇到错误,它会 是很好的https://github.com/xclerc/ocamljava汇报。