【问题标题】:Failing to link standard library in OCaml-Java无法在 OCaml-Java 中链接标准库
【发布时间】:2014-12-01 08:44:40
【问题描述】:

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

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

open Big_int

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

ocamljava -o myprog.jar source.ml

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

顺便说一句,我正在使用OCamlJava 2.0

【问题讨论】:

    标签: ocaml jvm-languages


    【解决方案1】:

    埃伦西,

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

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

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

       #load "file-name";;
    

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

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

       #load "big_int.cmo";;
    

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

    如果您有任何问题,请告诉我!

    【讨论】:

      【解决方案2】:

      您可能应该将“nums”库添加到命令行,如下所示:

      ocamljava nums.cmja source.ml
      

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

      【讨论】:

        猜你喜欢
        • 2014-01-04
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        相关资源
        最近更新 更多