私はOcamlプログラミングの初心者です。モジュールをプログラムにリンクする際に問題があります。実際に私はいくつかの正規表現のチェックをしているし、基本的には、Str moduleを使用して区切り文字列に基づいて文字列をトークン化する関数を書いています。だから私は、このようなライブラリで定義された関数を使用します。ocamlのモジュールをリンクする際にエラーが発生しました
Str.regexp_string /*and so on*/
を私はmlのファイルをコンパイルしようとすると、しかし、私は未定義のグローバル筋力を持っていることが示唆されたエラーを取得します。 List関数をList.lengthとタイプして使用します。特定のモジュールを明示的に含めることなくStrに対して行ったのと同じように機能します。私は
load "str.cma" /*Then the program works without problems*/
を使用するトップレベルで、私は私が最終的な実行可能ファイルを取得するには、エンドリンク3つのCMO年代にまで持っているのでmlのファイルにモジュールを含めたい場合、私は(ただし
open Str;;
include Str;; /*None of these work and I still get the same error*/
を試してみましたトップレベルで走っていない)。私はこれが本当に基本的な質問だと知っていますが、私はそれを解決するのに苦労しています。前もって感謝します。
最終的に生成された ".cmo"ファイルをリンクしたいと述べているため、あなたのソリューションはうまくいかないと思います。だから私が "Str"モジュールのいくつかの関数を使ってコンパイルしようとすると、あなたが言ったようにそれをコンパイルしてください。もし私がトップレベルに ".cmo"をロードすると、未定義のグローバルStrであるというエラーが表示されます –
質問はスタンドアロンプログラムをリンクすることです。トップレベルへの答えは少し異なります。トップレベルでは、 '#load" str.cma "'と言ってStrをロードすることができます。 –
...または 'ocaml str.cma'で' ocaml'トップレベルを呼び出します。 – nlucaroni