Я прочитал этот вопрос и другие, но моя проблема с компиляцией не решена.
Я тестирую отдельную компиляцию с этими файлами:
testmoda.ml
module Testmoda = struct
let greeter () = print_endline "greetings from module a"
end
testmodb.ml
module Testmodb = struct
let dogreet () = print_endline "Modul B:"; Testmoda.greeter ()
end
testmod.ml
let main () =
print_endline "Calling modules now...";
Testmoda.greeter ();
Testmodb.dogreet ();
print_endline "End."
;;
let _ = main ()
Теперь я создаю файл .mli
ocamlc -c -i testmoda.ml >testmoda.mli
и testmoda.cmi есть.
Далее я создаю файл .cmo без ошибок:
ocamlc -c testmoda.ml
Хорошо, сделайте то же самое с testmodb.ml:
strobel@s131-amd:~/Ocaml/ml/testmod> ocamlc -c -i testmodb.ml >testmodb.mli
File "testmodb.ml", line 3, characters 45-61:
Error: Unbound value Testmoda.greeter
Еще одна попытка:
strobel@s131-amd:~/Ocaml/ml/testmod> ocamlc -c testmoda.cmo testmodb.ml
File "testmodb.ml", line 3, characters 45-61:
Error: Unbound value Testmoda.greeter
Другие комбинации также не увенчались успехом.
Как скомпилировать testmodb.ml и testmod.ml? Это должно быть легко — я думаю, без ocamlbuild/omake/oasis.
Синтаксические ошибки в файлах исключены, если я совмещаю их в один файл (с необходимым пространством между ними), он отлично компилируется и выполняется.
ocamlc -c testmoda.ml
создает .cmi и .cmo , последний можно использовать для компиляции testmod.ml - отдельная компиляция. 26.02.2014ocamlc -c testmoda.ml;ocamlc -c testmodb.ml; ocamlc -o testmod testmoda.cmo testmodb.cmo testmod.ml
26.02.2014testmod.ml
. 26.02.2014