在OCaml中,引用链接是如何工作的?
例如,假设我声明了3个模块:
- A.ml - B.ml - C.ml
其中:
- A 需要 B 和 C - B 需要 A
在编译时应该怎么处理呢?由于顺序很重要,使用 ocamlc 或 ocamlopt 时,如何解决 B 和 A 之间的交叉引用问题?
我试图首先使用 ocamlc -c 将它们全部编译成 .cmo,然后将它们全部链接在一起,但没有成功,因为交换参数只会将问题从一个模块转移到另一个模块。
具体的错误是:
Error: Error while linking A.cmo: Reference to undefined global `B'
(如果我交换参数的顺序,情况也会反过来)
我认为这是一个简单的问题,但我无法解决它。谢谢您的帮助。
例如,假设我声明了3个模块:
- A.ml - B.ml - C.ml
其中:
- A 需要 B 和 C - B 需要 A
在编译时应该怎么处理呢?由于顺序很重要,使用 ocamlc 或 ocamlopt 时,如何解决 B 和 A 之间的交叉引用问题?
我试图首先使用 ocamlc -c 将它们全部编译成 .cmo,然后将它们全部链接在一起,但没有成功,因为交换参数只会将问题从一个模块转移到另一个模块。
具体的错误是:
Error: Error while linking A.cmo: Reference to undefined global `B'
(如果我交换参数的顺序,情况也会反过来)
我认为这是一个简单的问题,但我无法解决它。谢谢您的帮助。