外部インタフェース/API    

文字列を渡す

任意のMATLABデータタイプを、MEX-ファイルで受け渡すことができます。たとえば、つぎのCコードは、文字列を受け取り、反対の順番にしてキャラクタを出力します。

この例題では、ダイナミックなメモリ割り当てにCの標準関数callocの代わりにAPI関数mxCallocを使います。mxCallocは、MATLABのメモリマネージャを使ってダイナミックなメモリ割り当てを行い、ゼロに初期化します。Cでcallocを使う必要がある場合には、mxCallocを使わなければなりません。mxMallocmxReallocに対しても同様です。Cでmallocを使う必要がある場合はmxMallocを使い、reallocを使う必要がある場合はmxReallocを使ってください。

下記は、C計算ルーチンrevordを呼び出すゲートウェイ関数です。

ゲートウェイルーチンは、入力および出力文字列に対してメモリを割り当てます。これらはCの文字列なので、MATLAB文字列内の要素数よりも1大きい必要があります。つづいてMATLAB文字列が入力文字列にコピーされます。入力および出力文字列は、出力を反対の順番にロードする計算サブルーチン(revord)に渡されます。mxCallocはメモリを0に初期化するので、出力バッファは有効なnullで終了するCの文字列であることに注意してください。API関数mxCreateStringは、Cの文字列output_bufからMATLAB文字列を作成します。最後に、左辺出力引数plhs[0]は、ユーザが作成したMATLAB配列に設定されます。

タイプmxArrayの変数を計算サブルーチンから分離することによって、オリジナルのCコードを大きく変更しなくてもすみます。

この例題では、

とタイプすると、以下を出力します。


 第一の例 -- スカラを渡す 複数の入出力を渡す