C++ MEX API
メモ
C++ MEX API は、MATLAB (MEX ファイル) から呼び出せる C 関数の記述で説明されている C MEX API と互換性がありません。これらの API を MEX ファイルで混在させることはできません。
C++ MEX API を使用すると、移動セマンティクス、例外処理、メモリ管理などの C++11 機能を活用するアプリケーションを作成できます。
matlab::mex::Function
— C++ MEX 関数の基底クラス。matlab::mex::ArgumentList
— C++ MEX 関数からの入力および出力のコンテナー。matlab::engine::MATLABEngine
— エンジン API を定義しているクラス。
matlab::mex::Function
クラス
すべての MEX ファイルの実装は、matlab::mex::Function
から派生したクラスです。
関数 matlab::mex::Function | 説明 |
---|---|
getEngine | MATLABEngine オブジェクトへのポインターを取得します。 |
mexLock | メモリからの MEX ファイルのクリアを防止します。 |
mexUnlock | メモリからの MEX ファイルのクリアを許可します。 |
getFunctionName | 現在の MEX 関数の名前を取得します。 |
matlab::mex::ArgumentList
クラス
mex::Function
クラスの operator()
を使用して渡される MEX 関数の引数は、matlab::mex::ArgumentList
コンテナーです。ArgumentList
は、基となる配列の集合の全範囲です。
matlab::mex::ArgumentList メソッド | 説明 |
---|---|
operator[ ] | ArgumentList の要素への [] インデックスを有効にします。 |
begin | 開始反復子。 |
end | 終了反復子。 |
size | 引数リスト内の要素数を返します。このメソッドを使用して、呼び出しサイトで指定されている入力と出力の数をチェックします。 |
empty | 引数リストが空 (size() == 0 ) かどうかを示す logical 値を返します。 |
C++ エンジン API
matlab::engine::MATLABEngine
クラスを使用して MATLAB® の関数、変数、およびオブジェクトにアクセスします。このクラスでメソッドを呼び出すには、getEngine
を使用して、次の例の matlabPtr
のような共有ポインターを作成します。
std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();
matlabPtr
を使用してエンジン メソッドを呼び出します。以下に例を示します。
matlabPtr->feval(...);
エンジン メソッドは、mex::Function
クラスと同じスレッド上でのみ呼び出します。
matlab::engine::MATLABEngine メソッド | 説明 | 例 |
---|---|---|
feval | 入力引数をもつ MATLAB 関数を同期的に評価します。C++ から MATLAB に引数を渡す場合や、MATLAB から C++ に結果を返す場合には | MEX 関数からの MATLAB 関数の呼び出し |
fevalAsync | 入力引数と戻り値を指定した MATLAB 関数を、非同期的に評価します。 | 詳細については、mexCallMATLAB を使用した async 要求を参照してください。 |
eval | MATLAB ステートメントを文字列として同期的に評価します。 | MEX 関数からの MATLAB ステートメントの実行 |
evalAsync | MATLAB ステートメントを文字列として非同期的に評価します。 | 詳細については、mexCallMATLAB を使用した async 要求を参照してください。 |
getVariable | MATLAB のベース ワークスペースまたはグローバル ワークスペースから変数を取得します。 | MEX からの MATLAB 変数の設定と取得 |
getVariableAsync | MATLAB のベース ワークスペースまたはグローバル ワークスペースから変数を非同期的に取得します。 | |
setVariable | MATLAB のベース ワークスペースまたはグローバル ワークスペースに変数を入れます。同じ名前の変数が MATLAB ワークスペース内に存在する場合は、 | MEX からの MATLAB 変数の設定と取得 |
setVariableAsync | MATLAB のベース ワークスペースまたはグローバル ワークスペースに非同期的に変数を入れます。 | |
getProperty | オブジェクト プロパティの値を取得します。 | MEX 関数の MATLAB オブジェクト |
getPropertyAsync | オブジェクト プロパティの値を非同期的に取得します。 | |
setProperty | オブジェクト プロパティの値を設定します。 | MEX 関数の MATLAB オブジェクト |
setPropertyAsync | オブジェクト プロパティの値を非同期的に設定します。 |
例外の詳細については、C++ 例外クラス用の MATLAB エンジン APIを参照してください。例については、MEX 関数での例外のキャッチを参照してください。