Zuerst verwendet ich die folgende Make-Datei verwenden zu kompilieren (ich weiß nicht, ob es wichtig ist, aber da ich mit ihm zusammenstellen ...):Impossible Funktionen in Ocaml aus einer anderen Datei aller
NAME = project
ML = project.ml \
main.ml
MLI = project.mli
CMI = $(MLI:.mli=.cmi)
CMO = $(ML:.ml=.cmo)
CMX = $(ML:.ml=.cmx)
OCAMLDPE = ocamldep
CAMLFLAGS = -w Aelz -warn-error A
OCAMLC = ocamlc $(CAMLFLAGS)
OCAMLOPT = ocamlopt $(CAMLFLAGS)
OCAMLDOC = ocamldoc -html -d $(ROOT)/doc
all: .depend $(CMI) $(NAME)
byte: .depend $(CMI) $(NAME).byte
$(NAME): $(CMX)
@$(OCAMLOPT) -o [email protected] str.cmxa $(CMX)
@echo "[OK] $(NAME) linked"
$(NAME).byte: $(CMO)
@$(OCAMLC) -o [email protected] str.cma $(CMO)
@echo "[OK] $(NAME).byte linked"
%.cmx: %.ml
@$(OCAMLOPT) -c $<
@echo "[OK] [$<] builded"
%.cmo: %.ml
@$(OCAMLC) -c $<
@echo "[OK] [$<] builded"
%.cmi: %.mli
@$(OCAMLC) -c $<
@echo "[OK] [$<] builded"
documentation: $(CMI)
@$(OCAMLDOC) $(MLI)
@echo "[OK] Documentation"
re: fclean all
clean:
@/bin/rm -f *.cm* *.o .depend *~
@echo "[OK] clean"
fclean: clean
@/bin/rm -f $(NAME) $(NAME).byte
@echo "[OK] fclean"
.depend:
@/bin/rm -f .depend
@$(OCAMLDPE) $(MLI) $(ML) > .depend
@echo "[OK] dependencies"
ich habe 3 Dateien, mein main.ml
, ein project.ml
und project.mli
i eine einfache Funktion haben yolo im main.ml
:
let yolo lol =
print_string(lol)
;;
Aber wenn ich versuche, es zu nennen in meinem project.ml
wie folgt aus:
Main.yolo "lol";
Ich sage nur, einen Fehler haben, dass das Modul Main
nicht gebunden ist:
[OK] [project.mli] builded
File "project.ml", line 34, characters 1-10:
Error: Unbound module Main
make: *** [project.cmx] Erreur 2
hier auch der Gehalt an project.ml
ist (project.mli
ist leer):
let rec project l =
Main.yolo l;
;;
Random.self_init();;
let _ = project [] ;;
Während suche auf der stackoverflow die bereits gestellte frage habe ich tonnen von menschen mit dem gleichen problem gefunden .... weil sie #use
verwendet haben, aber es ist nicht mein Fall.
Als Anfänger, wenn Sie mir erklären könnten, wäre es genial :).
Es wäre hilfreich, den Inhalt von 'main.ml',' project.ml', 'project.mli' und die genaue Fehlermeldung zu haben. Auch wann passiert diese Fehlermeldung? Wann wird ein Modul gebaut oder während der Verbindungsphase? –
@ ÉtienneMillon hinzugefügt :) es gibt nichts Unglaubliches, hoffe es kann trotzdem helfen ^^ – xoxel