ocaml - 加载|使用|需要 Ocaml 源文件中的库对象文件

标签 ocaml

Ocaml 手册包含一个练习(here),其中库对象文件以下列方式加载到顶层循环(ocaml 交互式解释器)中:

#load "dynlink.cma";;
#load "camlp4o.cma";;

我正在尝试将后续代码复制到可编译的源文件中,并且该代码需要上述库对象文件。我可以用源文件中的一行代码加载这些文件并用ocamlc编译吗?我试过“#load”、“load”、“#use”、“use”、“#require”、“require”,所有这些都由“#directory”和“directory”处理。我知道您可以使用“include ;;”来包含模块,但这也不应该起作用,因为它们只是库文件,而不是模块。我试图在手册中找到一种方法来做到这一点,但无济于事。

我需要在编译命令中引用文件吗?如果是这样,我该怎么做?

最佳答案

以 # 字符开头的指令仅在顶层使用,严格来说不是 OCaml 语言的一部分。在要编译的文件中,不要使用 # 指令。请参阅 OCaml 手册 Chapter 9 . #load 指令用于加载库。编译文件时,您必须告诉编译器使用该库(在命令行上,而不是在文件中)。一开始直接学习编译器命令很好,但最终你应该使用ocamlfindoasis ,这使得编译更容易。

关于ocaml - 加载|使用|需要 Ocaml 源文件中的库对象文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831447/

相关文章:

ocaml - 在 Ocaml 中,如果我不想使用变量,如何避免未使用的变量警告?

oop - 什么时候应该在 OCaml 中使用对象?

parsing - 将 menhir 与 sedlex 结合使用

ocaml - 从 C 头文件生成 Ocaml 绑定(bind) stub

ocaml - 如何在ocamlbuild中使用-thread编译器标志?

ocaml - 字符串到字符列表

sorting - OCaml 中的尾递归合并排序

ocaml - OCaml 中的 "constraint"关键字可以做什么

module - Ocaml未绑定(bind)模块

ocaml - 使用 ocamlbuild 时生成 Menhir 的转储/解释文件