Dependencies Ocaml编译多个文件(循环依赖项)

Dependencies Ocaml编译多个文件(循环依赖项),dependencies,compilation,ocaml,circular-dependency,Dependencies,Compilation,Ocaml,Circular Dependency,我已经为ocaml下载了XMLlight,并尝试编译它,但一直没有成功,问题如下 当我输入ocamlopt dtd.ml时,将出现一个错误未绑定模块Xml。 然后我输入ocamlopt xml.ml,将出现一个错误未绑定值XmlParser.make。 然后我输入ocamlopt xmlParser.ml,将出现一个错误未绑定模块Dtd 实际上有没有一种方法可以将它们编译在一起?因为这个,我觉得自己很愚蠢。这并不是那么琐碎,没什么奇怪的。以下是make(来自mingw/cygwin ocaml发

我已经为ocaml下载了
XMLlight
,并尝试编译它,但一直没有成功,问题如下

当我输入
ocamlopt dtd.ml
时,将出现一个错误
未绑定模块Xml
。 然后我输入
ocamlopt xml.ml
,将出现一个错误
未绑定值XmlParser.make
。 然后我输入
ocamlopt xmlParser.ml
,将出现一个错误
未绑定模块Dtd


实际上有没有一种方法可以将它们编译在一起?因为这个,我觉得自己很愚蠢。

这并不是那么琐碎,没什么奇怪的。以下是
make
(来自mingw/cygwin ocaml发行版)的输出:

以及测试:

ocamlc xml-light.cma test.ml -o test.exe
make-install
输出:

ocamlopt  -c xml_parser.ml
ocamlopt  -c xml_lexer.ml
ocamlopt  -c dtd.ml
ocamlopt  -c xmlParser.ml
ocamlopt  -c xml.ml
ocamlopt -o xml-light.cmxa -a  xml_parser.cmx xml_lexer.cmx dtd.cmx xmlParser.cmx xml.cmx

cp xml-light.cmxa xml-light.a xml-light.cma xml.mli xmlParser.mli dtd.mli xml.cmi xmlParser.cmi dtd.cmi xml.cmx dtd.cmx xmlParser.cmx `ocamlc -where`
注意最后一行(我用换行符分隔):您可能没有cp命令;只需手动创建
%OCAMLLIB%\xml light
目录并将列出的文件复制到那里。然后您可以像这样构建您的项目:

ocamlopt -I +xml-light xml-light.cmxa foo.ml -o foo.exe

@巴蒂:你又帮我了。。。无论如何,还有一件事到目前为止还不能完成。当我把这个文件放在我的项目文件夹中时,我想使用
openxml;;打开这个文件
例如,为什么它会给我一条错误消息:
错误:xml.cmi不是一个编译接口
,我在这里还遗漏了什么?@barti:在IDE上没有办法做到这一点吗?我使用的是
Camelia
,当我使用IDE并键入
openxml;,这个错误就发生了或任何其他file@zfm:无论如何,你必须把库文件放在适当的目录下,不要认为IDE能帮你做到这一点。。。使用mingw构建这个特定的库要容易得多(尽管不是没有问题)@barti:我相信我把它放在了正确的目录中。。。比方说,如果我键入
openasdf中没有
asdf.cmi'
,错误将是
错误:未绑定模块asdf
。所以它检测到了正确的文件夹,正确的
.cmi
,但它的想法不同,我不明白为什么。@zfm:让我们把问题缩小到
xml light
,好吗?:)当您
打开Xml
时会出现什么错误?
ocamlopt -I +xml-light xml-light.cmxa foo.ml -o foo.exe