mex
MEX 関数とエンジン アプリケーションまたは MAT ファイル アプリケーションのビルド
構文
説明
mex はC++ 用の MATLAB データ APIで作成された 1 つ以上の C++ ソース ファイルをコンパイルして、現在のフォルダー内のバイナリ MEX ファイルにリンクします。これらのアプリケーションを作成する方法の詳細については、MATLAB (MEX ファイル) から呼び出せる C++ 関数の記述を参照してください。filenames
C 行列 APIまたはFortran 行列 APIに基づいて MEX ファイルを作成する場合、mex は 1 つ以上の C、C++、Fortran のソース ファイルを filenames-R2017b api でビルドします。MATLAB® の将来のバージョンでは、既定の api オプションによってインターリーブされた複素数 API (-R2018a) を使用するように変更されます。MathWorks では、MEX ファイルを作成して既存の MEX ファイルを更新し、インターリーブされた複素数 API を使用することを推奨しています。あるいは、MX_HAS_INTERLEAVED_COMPLEX マクロを使用して、MATLAB の複数バージョンにわたって目的の動作を適用します。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
C、C++、Fortran の各アプリケーションを操作する方法の詳細については、外部プログラミング言語およびシステムと MATLAB の統合を参照してください。
mex は指定された filenames api option1 ... optionNapi 引数とオプションの option1 ... optionN 引数を使用してビルドします。option1 ... optionN 引数は、既定の mex ビルド構成を補足またはオーバーライドします。
mex -client engine は、C++ 用の MATLAB データ APIで作成された C++ ソース ファイルをスタンドアロンの MATLAB エンジン アプリケーションまたは MAT ファイル アプリケーションにビルドします。詳細については、Structure of C++ Engine Applicationsを参照してください。filenames
C 用の MATLAB エンジン API、C MAT ファイル API、Fortran エンジン API、または Fortran MAT ファイル API に基づいてアプリケーションを作成する場合、mex -client engine は filenames-R2017b api を使ってスタンドアロン アプリケーションをビルドします。MATLAB の将来のバージョンでは、既定の api オプションによってインターリーブされた複素数 API (-R2018a) を使用するように変更されます。MathWorks では、エンジン アプリケーションまたは MAT ファイル アプリケーションを作成して既存のアプリケーションを更新し、インターリーブされた複素数 API を使用することを推奨しています。
mex -client engine は、指定された filenames api option1 ... optionNapi 引数とオプションの option1 ... optionN 引数を使用してエンジン アプリケーションまたは MAT ファイル アプリケーションをビルドします。
mex -setup [ は、MEX ファイルとエンジン アプリケーションや MAT ファイル アプリケーションをビルドするための指定された言語のコンパイラに関する情報を表示します。MATLAB はサポートされる言語ごとに既定のコンパイラを定義します。特定の言語に複数のコンパイラがある場合、lang]lang オプションを使用してその言語の既定のコンパイラを変更します。詳細については、既定のコンパイラの変更とC++ コンパイラの選択を参照してください。
mex -setup -client engine [ は、エンジン アプリケーションまたは MAT ファイル アプリケーションをビルドするためのコンパイラを選択します。lang]
例
matlabroot/extern/examples フォルダーからソース コードの例をコピーします。
copyfile(fullfile(matlabroot,'extern','examples','mex','explore.c'),'.','f')
MEX ファイルをビルドします。出力には、コンパイラ固有の情報が表示されます。
mex -R2018a explore.c
複素数行列を渡して、関数をテストします。
a = [1 3 5]; b = [5 3 1]; A = complex(a,b); explore(A)
------------------------------------------------ Name: prhs[0] Dimensions: 1x3 Class Name: double ------------------------------------------------ (1,1) = 1 + 5i (1,2) = 3 + 3i (1,3) = 5 + 1i
単一の C プログラム yprime.c を MEX ファイルにビルドします。
matlabroot/extern/examples フォルダーからソース コードの例をコピーします。
copyfile(fullfile(matlabroot,"extern","examples","mex","yprime.c"),".","f")
MEX ファイルをビルドします。出力には、コンパイラ固有の情報が表示されます。
mex yprime.cBuilding with 'Microsoft Visual C++ 2019 (C)'. MEX completed successfully.
テストします。
T=1; Y=1:4; yprime(T,Y)
ans = 1×4
2.0000 8.9685 4.0000 -1.0947
コンパイルやリンクのコマンドおよびトラブルシューティングに役立つその他の情報を表示するには、詳細モードを使用します。出力には、プラットフォームおよびコンパイラ固有の情報が表示されます。
mex -v -compatibleArrayDims yprime.c
環境変数を使用して、コンパイラに渡す追加のオプションを指定します。
変数名の特定:
MinGW®、macOS、および Linux® のコンパイラで C++ コードをビルドする場合、
CXXFLAGSを使用します。MinGW、macOS、および Linux のコンパイラで C コードをビルドする場合、
CFLAGSを使用します。Microsoft® Visual Studio® コンパイラの場合、
COMPFLAGSを使用します。
Visual Studio で MEX ファイルをビルドする場合は C++17 標準を指定します。
mex COMPFLAGS="$COMPFLAGS /std:c++17" yprime.c
string の区切り記号の使用に関するプラットフォーム別の詳細については、既定のコンパイラ スイッチ オプションのオーバーライドを参照してください。
値 -Wall を既存のコンパイラ フラグに付加して、yprime.c MEX ファイルをビルドします。値にスペース文字が含まれているので、文字列を区切らなければなりません。使用する区切り文字はプラットフォームに依存します。
MATLAB プロンプトで、一重引用符 (') を使用します。
mex -v COMPFLAGS='$COMPFLAGS -Wall' yprime.c
gcc/g++ を基にした MinGW-w64 コンパイラでは、Linux コンパイラ フラグを使用します。次のコマンドのいずれかを選択してください。
mex -v CXXFLAGS='$CXXFLAGS -Wall' yprime.c % C++ compiler mex -v CFLAGS='$CFLAGS -Wall' yprime.c % C compiler
Windows® コマンド プロンプトでは二重引用符 (") を使用してください。
mex -v COMPFLAGS="$COMPFLAGS -Wall" yprime.c
macOS と Linux 上のシェル コマンド ラインでは、一重引用符 (') を使用してください。
mex -v CFLAGS='$CFLAGS -Wall' yprime.c
MEX ファイルの例 fulltosparse は、loadsparse.F と fulltosparse.F の 2 つの Fortran ソース ファイルで構成されます。この例を実行するには、サポートされる Fortran コンパイラがシステムにインストールされている必要があります。
ソース ファイルを現在のフォルダーにコピーします。
copyfile(fullfile(matlabroot,'extern','examples','refbook','loadsparse.F'),'.','f') copyfile(fullfile(matlabroot,'extern','examples','refbook','fulltosparse.F'),'.','f')
fulltosparse MEX ファイルをビルドします。コマンド ラインの最初のファイルが fulltosparse.F なので、MEX ファイルの名前は fulltosparse です。出力には、コンパイラ固有の情報が格納されます。
mex -largeArrayDims fulltosparse.F loadsparse.F
Building with 'Intel Visual Fortran Composer XE 2013 with Microsoft Visual Studio 2012'. MEX completed successfully.
テストします。
full = eye(5); spar = fulltosparse(full)
spar =
1,1 1
2,2 1
3,3 1
4,4 1
5,5 1
現在のフォルダー内のすべての C ソース ファイルを MEX ファイル mymex にまとめます。MEX ファイルの名前を制御するには、-output オプションを使用します。
mex -output mymex *.c
ビルド コマンドを実行せずにその詳細をプレビューするには、-n オプションを使用します。出力には、プラットフォームおよびコンパイラ固有の情報が表示されます。
mex -n yprime.c
ソース MEX ファイルとは別にコンパイルするオブジェクト ファイルにリンクすることができます。
MEX ファイルの例 fulltosparse は、2 つの Fortran ソース ファイルで構成されます。fulltosparse ファイルは、mexFunction サブルーチンを含むゲートウェイ ルーチンです。loadsparse には、計算ルーチンが含まれています。
この例を実行するには、サポートされる Fortran コンパイラがシステムにインストールされている必要があります。計算サブルーチンを現在のフォルダーにコピーします。
copyfile(fullfile(matlabroot,'extern','examples','refbook','loadsparse.F'),'.','f')
サブルーチンをコンパイルし、オブジェクト ファイルを別のフォルダー c:\objfiles に配置します。
mkdir c:\objfiles mex -largeArrayDims -c -outdir c:\objfiles loadsparse.F
Building with 'Intel Visual Fortran Composer XE 2013 with Microsoft Visual Studio 2012'. MEX completed successfully.
ゲートウェイ サブルーチンを現在のフォルダーにコピーします。コンパイルして loadsparse オブジェクト ファイルとリンクします。
copyfile(fullfile(matlabroot,'extern','examples','refbook','fulltosparse.F'),'.','f') mex -largeArrayDims fulltosparse.F c:\objfiles\loadsparse.obj
Building with 'Intel Visual Fortran Composer XE 2013 with Microsoft Visual Studio 2012'. MEX completed successfully.
複素数ルーチンを処理するための MATLAB LAPACK ライブラリ サブルーチンをインクルードするパスを指定するには、-I オプションを使用します。これらのサブルーチンを使用するには、MEX ファイルがヘッダー ファイル fort.h にアクセスしなければなりません。
matrixDivideComplex.c 例を現在のフォルダーにコピーします。
copyfile(fullfile(matlabroot,'extern','examples','refbook','matrixDivideComplex.c'),'.','f')
'-I' と fort.h ファイルへのパスを連結して、引数 -I を作成します。
ipath = ['-I' fullfile(matlabroot,'extern','examples','refbook')];
LAPACK ライブラリ ファイルの名前とパスを表す変数と複素数処理ルーチンを含むファイル fort.c を作成します。
lapacklib = fullfile(matlabroot,'extern','lib',computer('arch'),'microsoft','libmwlapack.lib'); fortfile = fullfile(matlabroot,'extern','examples','refbook','fort.c');
MEX ファイルをビルドします。
mex('-v','-R2017b',ipath,'matrixDivideComplex.c',fortfile,lapacklib)
Windows プラットフォームで matrixDivide.c の例をビルドします。これには -L および -l オプションを使用して、libmwlapack.lib ライブラリを指定します。ライブラリ ファイルは フォルダーにあります。matlabroot\extern\lib\arch\microsoft
matrixDivide.c 例を現在のフォルダーにコピーします。
copyfile(fullfile(matlabroot,'extern','examples','refbook','matrixDivide.c'),'.','f')
mex コマンドで使用するために、このステートメントによって表示される matlabroot の値を取得します。
matlabroot
ans = C:\Program Files\MATLAB\R2014a
mex コマンドで使用するために、このステートメントによって表示される arch の値を取得します。
computer('arch')ans = win64
MEX ファイルをビルドするために、matlabroot と arch の値を mex コマンドにコピーします。
mex '-LC:\Program Files\MATLAB\R2014a\extern\lib\win64\microsoft' ... -llibmwlapack matrixDivide.c
パスの \Program Files にはスペースが含まれているので、文字 ' を使用しなければなりません。
例 mxcreatecharmatrixfromstr.c では、#define シンボル SPACE_PADDING を使用して、行列内の文字ベクトル間にどの文字を使うかを定義します。値を設定するには、-D オプションを使用して MEX ファイルをビルドします。
例を現在のフォルダーにコピーします。
copyfile(fullfile(matlabroot,'extern','examples','mx','mxcreatecharmatrixfromstr.c'),'.','f')
SPACE_PADDING 命令を設定して、値の間にスペースを追加します。
mex mxcreatecharmatrixfromstr.c -DSPACE_PADDING
Building with 'MinGW64 Compiler C '. MEX completed successfully.
engwindemo.c エンジンの例を現在のフォルダーにコピーします。
copyfile(fullfile(matlabroot,'extern','examples','eng_mat','engwindemo.c'),'.','f')
-client engine 構文を使用して、スタンドアロンの MATLAB エンジン アプリケーションをビルドします。
mex -client engine engwindemo.c
Windows プラットフォームを使用している場合、最初に MATLAB を COM サーバーとして登録しなければなりません。詳細については、COM サーバーとしての MATLAB の登録を参照してください。
例を実行します。
!engwindemomex -setupMATLAB はサポートされるコンパイラのリストに基づいて、お使いのバージョンおよびシステム用のオプションを表示します。
mex リンク コマンドにオプションを追加するには、LINKFLAGS コマンド ライン オプションを使用します。たとえば、Windows で mymex.c をビルドするときに実行可能ファイルの環境を指定するには、次のように入力します。
mex -v LINKFLAGS='$LINKFLAGS /subsystem:windows' mymex.c
入力引数
名前とファイル拡張子を含む 1 つ以上のファイル名。string または文字ベクトルとして指定します。ファイルが現在のフォルダーにない場合は、ファイルへの絶対パスを指定します。
ファイル名には、以下を任意に組み合わせることができます。
C、C++ または Fortran のソース ファイル。
Simulink® S-Function ファイル。
オブジェクト ファイル。
スタティック ライブラリ ファイル。
filenamesはライブラリ ファイルへの完全修飾パスを含まなければなりません。ライブラリは、mexで現在使用されているのと同じコンパイラを使用してコンパイルする必要があります。ダイナミック ライブラリをリンクするには、
-lオプションを使用します。libname
filenames のリストに最初に現れるソース コード ファイルが、バイナリ MEX ファイル、エンジン アプリケーション、または MAT ファイル アプリケーションの名前になります。この命名規則をオーバーライドするには、-output オプションを使用します。
MATLAB エディターを使用してソース コードを作成します。Microsoft Visual Studio または Xcode などの統合開発環境 (IDE) を使用する場合、mex コマンドを使用するか、MEX スクリプト オプションによるカスタム ビルドのガイドラインに従うことができます。
MATLAB は、コンパイラがインストールされている場合には、filenames 引数の言語に基づいて、自動的にコンパイラを選択します。
リリース固有のC 行列 APIまたはFortran 行列 APIをもつリンク。次の表のいずれかの値として指定します。これらのオプションを組み合わせないでください。
このオプションは、C++ 用の MATLAB データ APIを使用する MEX ファイル、エンジン アプリケーション、または MAT ファイル アプリケーションには使用しないでください。
| API | 説明 |
|---|---|
| 以下でビルドされます。
MATLAB の将来のバージョンでは、既定の |
-R2018a | 以下でビルドされます。
R2018a で、インターリーブされた複素数 API によってビルドされた Fortran MEX ファイルを実行するには、R2018a Update 3 を使用しなければなりません。 |
-largeArrayDims | 以下でビルドされます。
|
-compatibleArrayDims | 以下でビルドされます。
LAPACK 関数または BLAS 関数を呼び出す場合、 C MEX S-Function のみで既定のオプション。 |
例: mex -R2018a explore.c
ビルド オプション (オプション)。次の表のいずれかの値として指定します。オプションは、指示がある場合を除き、任意のプラットフォームで任意の順序で指定できます。
| オプション | 説明 |
|---|---|
| Windows RSP ファイルを使用します。RSP ファイルは、コマンド ライン オプションを含むテキスト ファイルです。非 ASCII 文字はサポートされません。 |
| オブジェクト ファイルのみをコンパイルします。バイナリ MEX ファイルはビルドしません。 |
| エンジン アプリケーションまたは MAT ファイル アプリケーションをビルドします。 |
|
D または U と 例: コンパイラ命令を定義 |
| 既定のコンパイラ選択をオーバーライドします。
|
| シンボル情報を追加し、ビルドされるオブジェクト コードの最適化を無効にします。デバッグに使用します。 |
|
|
|
|
| ダイナミック オブジェクト ライブラリ MATLAB は
使用する場合、
スタティック ライブラリをリンクするには、入力引数 |
|
|
| オブジェクト コードを最適化します。最適化を使用してコンパイルするには、このオプションを使用します。最適化は既定で有効になっています。 このオプションは大文字の O で指定します。 |
| すべての出力ファイルをフォルダー |
| 既定の MEX ファイル命名メカニズムをオーバーライドします。適切な MEX ファイル拡張子をもつ、 |
|
|
| 情報を伝えるメッセージを非表示にします。 |
| C プリプロセッサ マクロの
|
| 詳細モードでビルドします。すべてのコマンド ライン引数が処理された後、内部変数の値を表示します。コンパイルおよびリンクの各ステップのすべての評価を表示します。コンパイラ設定の問題のトラブルシューティングに使用します。 |
| 環境変数 例:
|
言語。次の値のいずれか (大文字小文字は区別されない) として指定します。
C | C コンパイラ (C++ を含む) |
C++ または CPP | C++ コンパイラ |
Fortran | Fortran コンパイラ |
ヒント
mexは以下の場所から実行できます。MATLAB コマンド ウィンドウ
Windows システム プロンプト
macOS ターミナル
Linux シェル
MATLAB 以外のコマンド ラインで使用する場合、
mexプログラムは、UNIX の[matlabroot '/bin']および Windows の[matlabroot '\bin\win64']で指定されたフォルダーに格納されています。MEX ファイルの拡張子はプラットフォームによって異なります。さまざまなプラットフォーム用のバイナリ MEX ファイルを同じフォルダーに配置できます。MEX ファイルの拡張子を識別するには、関数
mexextを使用してください。MEX ファイルのプラットフォーム依存の拡張子
プラットフォーム バイナリ MEX ファイルの拡張子 Windows
mexw64Linux
mexa64Apple シリコン搭載の macOS
mexmaca64Intel® 搭載の macOS
mexmaci64メモ
Intel を搭載した macOS でビルドされた MEX ファイルは、Rosetta 2 を使用する Apple シリコン プラットフォームではサポートされていません。
mexを使用してスタンドアロンの MATLAB エンジン アプリケーションまたは MAT ファイル アプリケーションの実行可能ファイルをビルドするには、-client engineオプションを使用してください。mexコマンドは、二重引用符 (") を含むフォルダー名をサポートしません。
バージョン履歴
R2006a より前に導入マクロ mxMAXNAM で定義される識別子は許容される最大長が 2048 に増加しています。この変更により、変数、関数、クラス、およびその他の多くのエンティティで、最大 2048 文字の名前が許容されるようになります。使用する識別子が長いと、パフォーマンスとメモリに悪影響を及ぼす可能性があります。この制限よりもオペレーティング システムにおけるファイル名の最大長の方が短いことがあります。
この変更の前は、識別子の最大長は 63 文字でした。
定数の mxMAXNAM を使用している MEX ファイルおよびエンジン アプリケーションや MAT ファイル アプリケーションについては、再コンパイルしてください。
MATLAB では、Windows プラットフォームで C および C++ インターフェイス、MEX ファイル、スタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための、C および C++ 用の Intel oneAPI DPC++/C++ コンパイラ (icx) がサポートされています。
MATLAB では、Windows プラットフォームで Fortran MEX ファイルおよびスタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための Intel Fortran コンパイラ (ifx) がサポートされています。
MATLAB では、Windows プラットフォームで Fortran MEX ファイルおよびスタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための MinGW コンパイラ (Fortran) がサポートされています。インストール手順については、MATLAB Support for MinGW-w64 C/C++/Fortran Compiler を参照してください。
MATLAB では、Windows プラットフォームで C および C++ インターフェイス、MEX ファイル、スタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための、C および C++ 用の Build Tools for Visual Studio 2022 および 2019 がサポートされています。
MATLAB では、Apple シリコン プラットフォームで Fortran MEX ファイルおよびスタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための NAG® Fortran コンパイラがサポートされています。
MATLAB では、Windows プラットフォームで MinGW-w64 version 8.1 コンパイラがサポートされています。インストールの説明については、次の MATLAB Answers™ の記事を参照してください。FAQ: How do I install the MinGW compiler?
MATLAB では、次の Intel oneAPI コンパイラがサポートされています。
oneAPI 2023 コンパイラ (Microsoft Visual Studio 2019 および 2022)。
oneAPI 2022 コンパイラ (Visual Studio 2017、2019、および 2022)。
Windows および macOS プラットフォームで以下をビルドできます。
C および C++ インターフェイス
C、C++、および Fortran MEX ファイル
C、C++、および Fortran のスタンドアロン MATLAB エンジン アプリケーション
C および Fortran のスタンドアロン MATLAB MAT ファイル アプリケーション
MinGW および Linux コンパイラで C++ コードをビルドするための MEX オプション ファイルに CXXFLAGS フラグ -std=c++11 が含まれなくなりました。
macOS コンパイラ用の MEX オプション ファイルには代わりに CXXFLAGS オプション -std=c++14 が含まれています。
引き続き -std=c++11 オプションを使用して MEX ファイル myFunc をビルドするには、以下を入力します。
mex myFunc.cpp 'CXXFLAGS=$CXXFLAGS -std=c++11'
MATLAB は Windows でのシステム エンコードとして UTF-8 を使用するようになり、サポートするすべてのプラットフォームにわたって Unicode® の採用を完了しました。MEX ファイル内から行われるシステム呼び出しは、UTF-8 でエンコードされた文字列を取得して返します。MEX ファイルに、別のシステム エンコードを想定しているコードまたはサードパーティ ライブラリへのリンクが含まれる場合は、文字化けしたテキストが表示される可能性があるため、コードを Unicode 準拠に更新する必要があります。
R2021b 以前にビルドされた MEX ファイルには、MATLAB はマクロ FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID を提供していました。これは、複素数を Fortran の関数 BLAS および関数 LAPACK に渡す際にプラットフォーム依存の呼び出し構文の違いを処理するためです。R2022a から、プラットフォームごとでの異なる呼び出し構文は不要になり、この違いを扱うマクロが削除されました。
コードを更新するには、以下のように FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID を使用しているステートメントを置換します。
/* Call BLAS function */ /* Use a different call syntax on different platforms */ #ifdef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID zdotu(&result, &nElements, zinA, &incx, zinB, &incy); #else result = zdotu(&nElements, zinA, &incx, zinB, &incy); #endif
次に置き換えます。
/* Call BLAS function */ zdotu(&result, &nElements, zinA, &incx, zinB, &incy);
R2021b Update 3 以降、MATLAB は、C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドで Microsoft Visual Studio 2022 をサポートしています。
MATLAB は、Linux プラットフォームでの C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドで gcc version 5.x 以降をサポートしています。version 4.0 以前を使用している場合、MATLAB は警告を表示します。
macOS および Linux のプラットフォームで、MATLAB はシステム エンコードに UTF-8 を使用します。macOS または Linux でビルドされた MEX ファイル内から行われるシステム呼び出しは、UTF-8 でエンコードされた文字列を取得して返します。MEX ファイルに、別のシステム エンコードを想定しているコードまたはサードパーティ ライブラリへのリンクが含まれる場合は、文字化けしたテキストが表示される可能性があるため、コードを Unicode 準拠に更新する必要があります。
Windows プラットフォームでは、Windows の [地域] 設定で [ワールドワイド言語サポートで Unicode UTF-8 を使用] オプションが有効になっている場合、MATLAB は UTF-8 をシステム エンコードとして使用します。
次の表に、C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2020a に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | Intel Parallel Studio XE 2020 (C、C++、および Fortran) | Windows |
追加 | Intel Parallel Studio XE 2020 (Fortran) | macOS |
追加 | Apple Xcode 11.x | macOS |
廃止 | Intel Parallel Studio XE 2017 | Windows macOS |
次の表に、C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2019b に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | Microsoft Visual Studio 2019 (C/C++) | Windows |
廃止 | Intel Parallel Studio XE 2015 および XE 2016 (Fortran) | Windows macOS |
Windows および Linux のプラットフォーム上で C99 互換コンパイラによる MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、true、false、および bool の定義が変更されました。MATLAB は、IEEE Std 1003.1 の定義に従って、<stdbool.h> を使用してこれらの値を定義します。
The <stdbool.h> header shall define the following macros:
bool
Expands to _Bool.
true
Expands to the integer constant 1.
false
Expands to the integer constant 0.
_bool_true_false_are_defined
Expands to the integer constant 1.R2019a 以前の MATLAB は、Windows および Linux プラットフォームで、これらの値を次のように定義していました。
true—#definedは1false—#definedは0bool—typedefはunsigned char
macOS プラットフォームについて、変更はありません。
次の表に、C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB に追加された Intel コンパイラのサポートを示します。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | Intel Parallel Studio XE 2019 と Microsoft Visual Studio 2015 および 2017 (C、C++、および Fortran) | Windows |
追加 | Intel Parallel Studio XE 2019 (Fortran) | macOS |
Fortran 行列 APIは、インターリーブされた複素数格納表現をサポートしています。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
Fortran MEX 関数をビルドする場合は、インターリーブされた複素数 API を使用するために MEX ファイルをアップグレードする必要があるかを確認してください。
メモ
R2018a で、インターリーブされた複素数 API によってビルドされた Fortran MEX ファイルを実行するには、R2018a Update 3 を使用しなければなりません。
次の表に、C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2018b に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | MinGW-w64 version 6.3.0 コンパイラ (https://www.mingw-w64.org/) | Windows |
追加 | C、C++、および Fortran 用の、Microsoft Visual Studio 2015 と 2017 での Intel Parallel Studio XE 2018 | Windows |
追加 | Intel Parallel Studio XE 2018 (Fortran) | macOS |
廃止 | Microsoft Visual C++® 2013 Professional | Windows |
大規模なデータ配列をより高速に処理するには、最新の C++ 設計パターン、拡張データ型のサポート、および MATLAB のコピーオンライト セマンティクスを使用して、MEX 関数を作成します。詳細については、MATLAB (MEX ファイル) から呼び出せる C++ 関数の記述を参照してください。
R2017b 以前で機能する MEX ファイルを必要とせず、最新の C++ に精通している場合は、新しいC++ MEX APIおよびC++ 用の MATLAB データ APIの使用を検討してください。C 言語で作業する方が好ましい場合は、引き続き C MEX API および C 行列 API を使用してください。
MATLAB は、"インターリーブ" された複素数格納表現をサポートしています。用語 "インターリーブされた複素数" は、実数部と虚数部が共に格納される、この表現を指します。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
C MEX 関数、C/C++ MEX S-Function、またはスタンドアロンの MATLAB エンジン アプリケーションや MAT ファイル アプリケーションをビルドする場合には、インターリーブされた複素数 API を使用するために MEX ファイルをアップグレードする必要があるかを確認してください。MATLAB は、Fortran 関数についてインターリーブされた複素数 API をサポートしていません。
この変更は MATLAB 言語には影響しません。関数とスクリプトを変更することなく、複素数に記載の機能を引き続き使用できます。
mex コマンドに新しいビルド オプション -R2017b および -R2018a が追加されました。これらはC 行列 APIのリリース固有のバージョンにリンクされています。
-R2017b— 既定のオプション。このオプションは、次のコマンドと同等です。mex mymex.c -largeArrayDims -DMEX_DOUBLE_HANDLE
-R2018a— 型付きのデータ アクセス関数を含む、インターリーブされた複素数 API を使用します。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
R2018a 以降、MATLAB はビルドに Boost ライブラリ version 1.56.0 を使用していますが、MEX 関数に任意の Boost ライブラリのバージョンを指定できます。
次の表に、C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2018a に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | GNU® gcc および gfortran version 6.x。Version 6.3 が推奨されます。 | Linux |
廃止 | GNU gcc および gfortran version 4.9.x | Linux |
廃止 | Apple Xcode 7.x | macOS |
廃止 | Intel C++ Composer XE 2013 | Windows |
廃止 | Intel Visual Fortran Composer XE 2013 | Windows |
廃止 | Intel Fortran Composer XE 2013 | macOS |
廃止予定 | Visual C++ 2013 Professional | Windows |
次の表に、C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2017b に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | Microsoft Visual C++ 2017 Professional、Community、および Enterprise の各エディション | Windows |
追加 | Microsoft Visual C++ 2015 と 2013 の Community および Enterprise の各エディション (Professional エディションは引き続きサポート) | Windows |
追加 | Microsoft Visual Studio 2017 を介してインストールした Visual Studio 2015 (v140) ツールセット | Windows |
追加 | MinGW-w64 version 5.3.0 コンパイラ (https://www.mingw-w64.org/) | Windows |
追加 | Intel Parallel Studio XE 2017 と Microsoft Visual Studio 2017 (C、C++、および Fortran) | Windows |
廃止 | MinGW-w64 version 4.9.2 コンパイラ (TDM-GCC) | Windows |
廃止 | Microsoft Visual C++ 2012 Professional | Windows |
| 廃止 | Microsoft Windows SDK 7.1 | Windows |
廃止予定 | GNU gcc および gfortran version 4.9 のサポートは将来のリリースで廃止される予定であり、その時点で新しいバージョンがサポートされます。 | Linux |
関数 mex は、既定で大規模配列ハンドリング API (-largeArrayDims オプション) を使用します。ベスト プラクティスは、このライブラリを使用して MEX ファイルをリビルドするように MEX ソース コードを更新することです。手順については、インターリーブされた複素数 API を使用するように MEX ファイルをアップグレードを参照してください。
既存のバイナリ MEX ファイルは、リビルドせずに実行できます。詳細については、MEX のバージョン互換性を参照してください。
mex コマンドの -largeArrayDims オプションまたは -compatibleArrayDims オプションを使用せずに MEX ファイルをビルドする場合は、次の表を確認して、R2017a で変更された既定の動作への依存を回避してください。-compatibleArrayDims オプションを使用して MEX ファイルをビルドした結果の詳細については、アップグレードしない場合どうなるかを参照してください。
C MEX S-Function の既定のビルド モードは、-compatibleArrayDims のままです。
次の表は、MEX ファイルまたは S-Function をリビルドするために必要な mex コマンドの変更を示しています。
ソース コード | mex コマンド — R2016b 以前 | mex コマンド — R2017a 以降 |
|---|---|---|
MEX ファイル C/C++ または Fortran ソース コード、32 ビット API を使用 | mex myMex.c | mex myMex.c -compatibleArrayDims |
mex myMex.c -compatibleArrayDims | 変更なし。 | |
MEX ファイル C/C++ または Fortran ソース コード、64 ビット API を使用 | mex myMex.c -largeArrayDims | 次を使用: または、次の使用を続行: |
S-Function C/C++ ソース コード、32 ビット API を使用 | mex sfun.c | 変更なし。 |
mex sfun.c -compatibleArrayDims | 変更なし。 | |
S-Function C/C++ ソース コード、64 ビット API を使用 | mex sfun.c -largeArrayDims | 変更なし。 |
S-Function Fortran ソース コード、32 ビット API を使用 | mex sfun.F | mex sfun.F -compatibleArrayDims |
S-Function Fortran ソース コード、64 ビット API を使用 | mex sfun.F -largeArrayDims | 変更なし。 |
C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB には次の表に示すコンパイラのサポートが追加されました。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | Intel Parallel Studio XE 2017 | Windows |
追加 | Intel Parallel Studio XE 2017 (Fortran) | macOS |
追加 | Xcode 8.x、R2016b 以降 | macOS |
mex コマンドは、MATLAB R2016b 以降でビルドされた MEX ファイルに MEX バージョン番号を組み込みます。この番号は、実行時に MEX 関数がリンク対象として想定する行列 API のバージョンを示します。
mex コマンドを使用しない場合は、MEX ファイルのビルドに使用するコマンドを更新する必要があります。詳細については、Compiling MEX Files without the mex Command を参照してください。
次の表に、C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2016b に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | GNU gcc および gfortran version 4.9 | Linux |
廃止 | GNU gcc および gfortran version 4.7 | Linux |
追加 | Intel Parallel Studio XE 2016 (Fortran) | Mac OS X |
廃止 | Microsoft Visual Studio 2010 Professional | Windows |
廃止予定 | Visual C++ 2012 Professional Apple Xcode 6.2 | Windows Mac OS X |
mex コマンドの -f オプションは、ファイル拡張子 .bat または .sh をもつ引数を受け入れません。
-f オプションを使用してコンパイラを指定する代わりに、既定のコンパイラの変更に記載されているワークフローを使用してください。
mex コマンドのオプションを使用して、コンパイラのビルド オプションを変更できます。たとえば、-L オプションと -I オプションを使用して、システム上のライブラリを見つけます。 オプションを使用して、コンパイラにオプションを渡します。varname=varvalue
次の表に、C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2016a に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
| サポート | コンパイラ | プラットフォーム |
|---|---|---|
追加 | Intel Parallel Studio XE 2016 | Windows |
追加 | Apple Xcode 7.x | Mac OS X |
廃止 | Microsoft Visual Studio 2008 Professional Edition | Windows |
廃止予定 | Microsoft Visual Studio 2010 Professional Edition | Windows |
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)