はじめに

現代のコンピュータシステムのほとんどでは,コードを収集してライブラリにする方法が提供されている.これらのライブラリは,アプリケーションが構築されたときではなく,実行時にアプリケーションにロードできる場合は,ダイナミックであると言われる.アプリケーションが実行し始めてからのロードが可能であると,機能を追加するのに便利である.多くのプラグインアーキテクチャが,このようにロードされたダイナミックライブラリから構築されている.

Wolfram LibraryLink を使うと,ダイナミックライブラリをWolfram言語カーネルに直接ロードすることが可能となり,ライブラリの関数が Matheatica から即座に呼び出せるようになる.整数,実数,パックアレー,文字列等のCのようなデータ型だけでなく,任意のWolfram言語式も交換できる.さらにエラーを送り,Wolfram言語にコールバックするような便利な関数もある.

Wolfram LibraryからWolfram言語にLibraryFunctionLoadで関数がロードできる.

LibraryFunctionに整数の引数を与えて呼び出すことができる.結果も整数である.

表やその他のWolfram言語プログラミング構造の中で関数を使うことができる.

整数でない入力で関数を呼び出すと,エラーが生じ,入力がそのまま返される.

Wolfram Libraryを作る方法の一つに,それをCまたはC++で書き,C開発ツールを使うというものがある.以下に関数のソースを示す(Cコードの詳細は「Libraryの構成とライフサイクル」で説明されている).

DLLEXPORT int demo_I_I(WolframLibraryData libData, 
                mint Argc, MArgument *Args, MArgument Res) {
    mint I0;
    mint I1;
    I0 = MArgument_getInteger(Args[0]);
    I1 = I0 + 1;
    MArgument_setInteger(Res, I1);
    return 0;
}

機械整数以外にも,機械実数や機械複素数,文字列,パックアレー,疎な配列,画像,一般的な式等,種々の形式を渡すことができる.

Wolfram Library関数の代替方法

Wolfram Libraryから関数を直接ロードすることには,数々の利点と欠点がある.このセクションでは利点と欠点について見直し,代替方法について述べる.

Wolfram言語

代替方法の一つは,Wolfram言語を使うというものである.つまり,Wolfram言語プログラミングの通常の方法でコードを書くということである.以下に利点と欠点をまとめる.

WSTPアプリケーション

別の方法に,Wolfram Symbolic Transfer Protocol (WSTPを使うというものがある.つまり,Cプログラムとしてコードを書き,WSTPプログラミングインターフェースを使ってWolfram言語に接続するということである.以下に利点と欠点をまとめる.