外部インタフェース/API    

第一の例 - スカラを渡す

Cコードとその等価なMEX-ファイルの簡単な例を見てみましょう。以下は、スカラを2倍にするCの計算関数です。

以下は、 MEX-ファイル形式で書かれた同じ関数です。

Cでは、関数引数のチェックは、コンパイル時に行われます。MATLABでは、任意のタイプおよび数の引数をM-ファンクションに渡すことが可能で、これは引数チェックが行います。MEX-ファイルに対しても同様です。ユーザプログラムは、サポートされているタイプの入力引数または出力引数の数を安全に扱う必要があります。

この例題のソースファイルをコンパイル、リンクするには、MATLABプロンプトでつぎのようにタイプします。

これは、実行しているプラットフォームに対応する拡張子をもつ、 timestwoというMEX-ファイルを作成するのに必要なステップを行います。timestwoはM-ファンクションのように呼び出すことができます。

MATLABまたはオペレーティングシステムのプロンプトでMEX-ファイルを作成しコンパイルできます。MATLABは、mexスクリプトのM-ファイル版であるmex.mを使い、オペレーティングシステムはWindowsではmex.batを、UNIXではmex.shを使います。いずれの場合でも、プロンプト

上記の例で、スカラは1行1列の行列として表されます。スカラ変数のコピーのポインタの代わりに、スカラ値を出力するmxGetScalarという特殊なAPI関数を使うことができます。以下は、そのコードです(簡潔にするため、エラーチェックは省略されています)。

この例は、入力スカラxを値でサブルーチンtimestwo_altに渡しますが、出力スカラyはポインタとして渡します。


  C MEX-ファイルの例 文字列を渡す