未能链接OCaml-Java中的标准库
问题描述:
我需要将一个简单的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.cmi
,big_int.cmj
,big_int.cmx
,big_int.mli
,nums.cma
,nums.cmja
,等这个目录/Users/myname/.opam/ocamljava-2.0-alpha2/lib/ocaml
上。我知道Big_int存在于这些库中,但我不知道如何将它们链接到汇编。
顺便说一句,我使用。
答
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。
如果您有任何问题,请让我知道!
答
你或许应该在“NUMS”库添加到命令行,如:
ocamljava nums.cmja source.ml
另外请注意,“NUMS”的OCaml中的Java实施至今只有 轻轻测试,可能包含错误。如果您遇到错误,它会 是很好的https://github.com/xclerc/ocamljava汇报。