load | use |需要Ocaml源文件中的库对象文件

时间:2012-12-12 01:38:31

标签: ocaml

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

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

我试图在可编译的源文件中复制后续代码,并且代码需要上面的库对象文件。我可以在源文件中使用一行代码加载这些文件并使用ocamlc进行编译吗?我已经尝试了#34;#load"," load"," #use"," use"," #require& #34;,"要求",所有这些都由" #directory"和"目录"。我知道你可以用" include ;;"包含模块,但这也不应该工作,因为它们只是库文件,而不是模块。我试图在手册中找到一种方法,但无济于事。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我假设您的源代码是使用camlp4o实现的扩展编写的。要编译源代码,您可以说:

ocamlc -pp camlp4o -o myfile myfile.ml

我相信只有当你想在顶层(解释器)中使用扩展时才需要#load命令的复杂性。