最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
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
ファイルを参照してください。
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 とデストラクターの両方で同じメモリを解放することを意味し、メモリを破損する可能性があります。
cout
や C 言語の関数 printf
を使用しても、C++ MEX ファイルでは期待どおりに機能しません。代わりに関数 mexPrintf
を使用します。