ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

C 行列 API を使用した C++ MEX ファイルの作成

C 行列 APIを使用してビルドされた MEX 関数は、すべての C++ 言語標準をサポートします。このトピックでは、MEX ファイルを作成および使用するときに考慮すべき C++ 言語固有の問題について説明します。また、MATLAB® は、最新の C++ のセマンティクスと設計パターンを使用する API であるMATLAB データ APIも提供します。この API を使用して MEX 関数をビルドするには、C++ MEX アプリケーションを参照してください。

C 行列 API の関数を C++ アプリケーションに使用できます。また、MATLAB C コード例を C++ アプリケーションにコピーできます。たとえば、C と C++ の両方のステートメントが含まれる mexcpp.cpp ファイルを参照してください。

C++ ソース ファイルの作成

MATLAB C++ のソース コード例は、.cpp ファイル拡張子を使用します。拡張子 .cpp は一義的で、C++ コンパイラで認識されます。その他の拡張子として、.C.cc および .cxx があります。

コンパイルとリンク

C++ MEX ファイルをビルドするには、以下を入力します。

mex filename.cpp

ここで filename はソース ファイルの名前です。

C++ MEX ファイルは、ファイルをコンパイルしたものと同じバージョンの MATLAB システムでのみ実行できます。

クラス デストラクターでのメモリに関する留意点

MEX 関数で使用されるクラスの C++ デストラクターで関数 mxFree または関数 mxDestroyArray を使用しないでください。MEX 関数がエラーをスローすると、一時的な配列の自動クリーンアップで説明されているように、MATLAB は MEX ファイル変数をクリーンアップします。

オブジェクトがスコープ外になるエラーが発生すると、MATLAB により C++ デストラクターが呼び出されます。デストラクターでメモリを直接解放することは、MATLAB とデストラクターの両方で同じメモリを解放することを意味し、メモリを破損する可能性があります。

mexPrintf を使用した MATLAB コマンド ウィンドウへの表示

cout や C 言語の関数 printf を使用しても、C++ MEX ファイルでは期待どおりに機能しません。代わりに関数 mexPrintf を使用します。

参考

関連する例

詳細