Ich bin ein Anfänger mit Ocaml Programmierung und ich habe Probleme beim Verknüpfen eines Moduls in meinem Programm. Tatsächlich mache ich eine Überprüfung des regelmäßigen Ausdruckes und ich habe eine Funktion geschrieben, die im Grunde eine Zeichenkette basierend auf einer Trennzeichenfolge unter Verwendung der Str module tokenisiert. So verwende ich die definierten Funktionen in der Bibliothek wie folgt aus:Fehler beim Verknüpfen des Moduls in ocaml
Str.regexp_string /*and so on*/
Allerdings, wenn ich versuchen, die ml-Datei zu kompilieren, erhalte ich einen Fehler darauf hindeutet, dass ich eine nicht definierte globale Str. Wir verwenden Liste Funktionen durch Eingabe in List.length und so weiter, wie ich für Str getan habe, ohne explizit das spezifische Modul einzuschließen. Ich habe versucht,
open Str;;
include Str;; /*None of these work and I still get the same error*/
jedoch, wenn in der Toplevel verwende ich
load "str.cma" /*Then the program works without problems*/
Ich mag das Modul in der ml-Datei aufgenommen werden, weil ich in dem Endglied 3 CMO müssen, um die endgültige ausführbare Datei zu erhalten (die wird nicht im Toplevel ausgeführt). Ich weiß, dass dies eine wirklich grundlegende Frage ist, aber ich habe Probleme, sie zu lösen. Danke im Voraus.
Ich glaube nicht, dass Ihre Lösung funktionieren würde, weil er erwähnt, dass er die ".CMO" -Dateien verknüpfen will, die letztendlich generiert werden. Also, wenn ich versuche, ein einfaches zu kompilieren, das einige Funktionen des "Str" -Moduls verwendet, und kompiliere es wie du gesagt hast. Wenn ich die ".cmo" in der Toplevel lade, bekomme ich immer noch einen Fehler undefined global Str –
Die Frage bezieht sich auf die Verknüpfung eines eigenständigen Programms.Die Antwort für Toplevel ist etwas anders. In Toplevel können Sie Str laden, indem Sie '#load 'str.cma" 'sagen. –
... oder den 'ocaml' Toplevel mit' ocaml str.cma' aufrufen. – nlucaroni