C Function ブロックからの C スタイルのラッパー関数を使用した C++ クラス メソッドの呼び出し
この例では、C Function ブロックで、C スタイルのラッパー関数を使用して C++ クラス メソッドを呼び出す方法を説明します。テンプレート クラスなどの一部の C++ クラスでは、C Function ブロックがクラス オブジェクトの直接のインスタンス化やクラス メソッドの呼び出しをサポートしていないため、C ラッパー関数を使用する必要があります。Interface with C++ Classes Using C Function Blockを参照してください。C++ クラス メンバーおよびメソッドに直接アクセスする C Function ブロックの例については、C Function ブロックからの C++ クラス メソッドの直接呼び出しを参照してください。
この例では、C スタイルのラッパー関数は adder_wrapper.h で宣言され、adder_wrapper.cpp に実装されています。
このモデル例を実行するには、MATLAB® で C++ コンパイラを実行するよう設定しなければなりません。これは、mex -setup コマンドを使用して C++ コンパイラを選択することで行えます。
C Function ブロックからの C 関数の呼び出しを有効にするため、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの [シミュレーション ターゲット] ペインにヘッダー ファイルとソース ファイルを指定します。このモデルのカスタム コード ヘッダー ファイル adder_template.h は、クラス メンバー関数とともに adder クラス テンプレートを定義します。ヘッダー ファイル adder_wrapper.h には、C Function ブロックで呼び出される C スタイルのラッパー関数の宣言が含まれています。C スタイルのラッパー関数のプロトタイプは次のとおりです。
void *createAdder()void deleteAdder(void *obj)int adderOutput(void *obj, int increment)
ここで、void *obj はクラス オブジェクト ハンドルで、increment は加算器関数で使用される入力です。
C Function ブロック ダイアログ ボックスの [開始コード] セクションで関数 createAdder が呼び出され、adder クラスのオブジェクトを作成します。[終了コード] セクションで関数 deleteAdder が呼び出され、adder クラス オブジェクトを破棄します。[出力コード] セクションで、関数 adderOutput が呼び出されます。この例では、C Function ブロックの端子は次のように設定されます。
関数
createAdderで返されるadderクラス オブジェクトobjは、C Function ブロックのPersistentシンボルです。C Function ブロックの入力は
incrementにマッピングされます。C Function ブロックの出力は関数
adderOutputの戻り値にマッピングされます。
