Module Dynlink


module Dynlink: sig  end
バイトコードオブジェクトファイルの動的ロードです。

val init : unit -> unit
ライブラリを初期化します。loadfile の前に呼んでください。
val loadfile : string -> unit
与えられたバイトコードオブジェクトファイルをロードしてリンクします。 ロードされたコンパイルユニットのトップレベル式がすべて評価されます。 ユニットが定義する値の名前にアクセスする機能はありません。よって、ユニットは自分で自分のエントリーポイントをメインプログラムに登録しなければなりません。例えば、関数テーブルを書き換えるなどしてください。
val loadfile_private : string -> unit
loadfile と同じですが、これでロードされたモジュールは今後動的ロードされる別のモジュールにアクセスできません。
val add_interfaces : string list -> string list -> unit
add_interfaces units path は動的リンクされたオブジェクトファイルが units にある名前のコンパイルユニットへアクセスできるようにします。そのユニットのインターフェイス (.cmi) は path (ディレクトリ名のリスト) を検索します。初期状態では、動的リンクされたオブジェクトファイルは実行プログラムのどのコンパイルユニットにも (標準ライブラリすら) アクセスできません。add_interfacesDynlink.add_available_units (以下参照) を呼んでユニットにアクセスできるようにする必要があります。
val add_available_units : (string * Digest.t) list -> unit
Dynlink.add_interfaces と同じですが、, ユニットのインターフェイスを見つけるために .cmi ファイルを探すのではなく、それぞれのユニットが持つインターフェイスダイジェストを使います。この方法だと、実行時に .cmi インターフェイスファイルは必要ありません。extract_crc を使えばダイジェストを .cmi ファイルから取り出すことができます。extract_crc は Objective Caml 標準ライブラリディレクトリ中にインストールされています。
val clear_available_units : unit -> unit
動的リンクされたプログラムがアクセス可能なコンパイルユニットのリストをクリアします。
val allow_unsafe_modules : bool -> unit
安全でないオブジェクトファイルの動的リンクを許すかどうか決定します。外部関数の宣言を持つコンパイルユニットは安全ではありません。型の安全性を壊す可能性があります。デフォルトで、安全でないオブジェクトファイルの動的リンクは許されていません。

type linking_error =
| Undefined_global of string
| Unavailable_primitive of string
| Uninitialized_global of string


type error =
| Not_a_bytecode_file of string
| Inconsistent_import of string
| Unavailable_unit of string
| Unsafe_file
| Linking_error of string * linking_error
| Corrupted_interface of string
| File_not_found of string
| Cannot_open_dll of string

exception Error of error
この例外 Error は動的リンク中で発生したエラーの説明を伝えるために発生します。
val error_message : error -> string
エラーの説明を表示可能なメッセージ文に変換します。