Main Content

C++ MEX API

メモ

C++ MEX API は、MATLAB (MEX ファイル) から呼び出せる C 関数の記述で説明されている C MEX API と互換性がありません。これらの API を MEX ファイルで混在させることはできません。

C++ MEX API を使用すると、移動セマンティクス、例外処理、メモリ管理などの C++11 機能を活用するアプリケーションを作成できます。

matlab::mex::Function クラス

すべての MEX ファイルの実装は、matlab::mex::Function から派生したクラスです。

関数 matlab::mex::Function

説明

getEngineMATLABEngine オブジェクトへのポインターを取得します。
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++ に結果を返す場合には feval を使用します。

MEX 関数からの MATLAB 関数の呼び出し
fevalAsync

入力引数と戻り値を指定した MATLAB 関数を、非同期的に評価します。

詳細については、mexCallMATLAB を使用した async 要求を参照してください。

eval

MATLAB ステートメントを文字列として同期的に評価します。

MEX 関数からの MATLAB ステートメントの実行
evalAsync

MATLAB ステートメントを文字列として非同期的に評価します。

詳細については、mexCallMATLAB を使用した async 要求を参照してください。

getVariable

MATLAB のベース ワークスペースまたはグローバル ワークスペースから変数を取得します。

MEX からの MATLAB 変数の設定と取得
getVariableAsync

MATLAB のベース ワークスペースまたはグローバル ワークスペースから変数を非同期的に取得します。

 
setVariable

MATLAB のベース ワークスペースまたはグローバル ワークスペースに変数を入れます。同じ名前の変数が MATLAB ワークスペース内に存在する場合は、setVariable によって上書きされます。

MEX からの MATLAB 変数の設定と取得
setVariableAsync

MATLAB のベース ワークスペースまたはグローバル ワークスペースに非同期的に変数を入れます。

 
getProperty

オブジェクト プロパティの値を取得します。

MEX 関数の MATLAB オブジェクト
getPropertyAsync

オブジェクト プロパティの値を非同期的に取得します。

 
setProperty

オブジェクト プロパティの値を設定します。

MEX 関数の MATLAB オブジェクト
setPropertyAsync

オブジェクト プロパティの値を非同期的に設定します。

 

例外の詳細については、C++ 例外クラス用の MATLAB エンジン APIを参照してください。例については、MEX 関数での例外のキャッチを参照してください。

関連するトピック