mex
MEX 関数またはエンジン アプリケーションのビルド
構文
説明
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 ... optionN
api
引数とオプションの option1 ... optionN
引数を使用してビルドします。option1 ... optionN
引数は、既定の mex
ビルド構成を補足またはオーバーライドします。
mex -client engine
はC++ 用の MATLAB データ APIで作成された C++ ソース ファイルをスタンドアロンの MATLAB エンジン アプリケーションにビルドします。詳細については、C++ エンジン プログラムの要素を参照してください。filenames
C 用の MATLAB エンジン API、C MAT ファイル API、Fortran エンジン API、または Fortran MAT ファイル API に基づいてアプリケーションを作成する場合、mex -client engine
は filenames
-R2017b
api
を使ってスタンドアロン アプリケーションをビルドします。MATLAB の将来のバージョンでは、既定の api
オプションによってインターリーブされた複素数 API (-R2018a
) を使用するように変更されます。MathWorks では、エンジン アプリケーションを作成して既存のアプリケーションを更新し、インターリーブされた複素数 API を使用することを推奨しています。
mex -client engine
は指定した filenames
api
option1 ... optionN
api
引数とオプションの option1 ... optionN
引数を使用してエンジン アプリケーションをビルドします。
mex -setup [
は、MEX ファイルをビルドするために指定された言語に対するコンパイラについての情報を表示します。MATLAB はサポートされる言語ごとに既定のコンパイラを定義します。特定の言語に複数のコンパイラがある場合、lang
]lang
オプションを使用してその言語の既定のコンパイラを変更します。詳細については、既定のコンパイラの変更とC++ コンパイラの選択を参照してください。
mex -setup -client engine [
はエンジン アプリケーションをビルドするためのコンパイラを選択します。lang
]
例
インターリーブされた複素数 API を使用した MEX ファイルのビルド
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 の MEX ファイルをビルドする
単一の C プログラム yprime.c
を MEX ファイルにビルドします。
matlabroot
/extern/examples
フォルダーからソース コードの例をコピーします。
copyfile(fullfile(matlabroot,"extern","examples","mex","yprime.c"),".","f")
MEX ファイルをビルドします。出力には、コンパイラ固有の情報が表示されます。
mex yprime.c
Building 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 ファイルをビルドする
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 の登録を参照してください。
例を実行します。
!engwindemo
C コンパイラを選択する
mex -setup
MATLAB はサポートされるコンパイラのリストに基づいて、お使いのバージョンおよびシステム用のオプションを表示します。
コマンド オプションのリンク
mex
リンク コマンドにオプションを追加するには、LINKFLAGS
コマンド ライン オプションを使用します。たとえば、Windows で mymex.c
をビルドするときに実行可能ファイルの環境を指定するには、次のように入力します。
mex -v LINKFLAGS='$LINKFLAGS /subsystem:windows' mymex.c
入力引数
filenames
— 1 つ以上のファイル名
string | 文字ベクトル
名前とファイル拡張子を含む 1 つ以上のファイル名。string または文字ベクトルとして指定します。ファイルが現在のフォルダーにない場合は、ファイルへの絶対パスを指定します。
ファイル名には、以下を任意に組み合わせることができます。
C、C++ または Fortran のソース ファイル。
Simulink® S-Function ファイル。
オブジェクト ファイル。
スタティック ライブラリ ファイル。
filenames
はライブラリ ファイルへの完全修飾パスを含まなければなりません。ライブラリは、mex
で現在使用されているのと同じコンパイラを使用してコンパイルする必要があります。ダイナミック ライブラリをリンクするには、
-l
オプションを使用します。libname
filenames
のリストに最初に現れるソース コード ファイルが、バイナリ MEX ファイルまたはエンジン アプリケーションの名前になります。この命名規則をオーバーライドするには、-output
オプションを使用します。
MATLAB エディターを使用してソース コードを作成します。Microsoft Visual Studio または Xcode などの統合開発環境 (IDE) を使用する場合、mex
コマンドを使用するか、MEX スクリプト オプションによるカスタム ビルドのガイドラインに従うことができます。
MATLAB は、コンパイラがインストールされている場合には、filenames
引数の言語に基づいて、自動的にコンパイラを選択します。
api
— リリース固有の API
-R2017b
(既定値) | -R2018a
| -largeArrayDims
| -compatibleArrayDims
リリース固有のC 行列 APIまたはFortran 行列 APIをもつリンク。次の表のいずれかの値として指定します。これらのオプションを組み合わせないでください。
このオプションは、C++ 用の MATLAB データ APIを使用する MEX ファイルまたはエンジン アプリケーションに使用しないでください。
API | 説明 |
---|---|
| 以下でビルドされます。
MATLAB の将来のバージョンでは、既定の |
-R2018a | 以下でビルドされます。
R2018a で、インターリーブされた複素数 API によってビルドされた Fortran MEX ファイルを実行するには、R2018a Update 3 を使用しなければなりません。 |
-largeArrayDims | 以下でビルドされます。
|
-compatibleArrayDims | 以下でビルドされます。
LAPACK 関数または BLAS 関数を呼び出す場合、 C MEX S-Function のみで既定のオプション。 |
例: mex -R2018a explore.c
option1 ... optionN
— ビルド オプション (オプション)
有効なオプション フラグに対応する string または文字ベクトル
ビルド オプション (オプション)。次の表のいずれかの値として指定します。オプションは、指示がある場合を除き、任意のプラットフォームで任意の順序で指定できます。
オプション | 説明 |
---|---|
| Windows RSP ファイルを使用します。RSP ファイルは、コマンド ライン オプションを含むテキスト ファイルです。非 ASCII 文字はサポートされません。 |
| オブジェクト ファイルのみをコンパイルします。バイナリ MEX ファイルはビルドしません。 |
| エンジン アプリケーションをビルドします。 |
|
D または U と 例: コンパイラ命令を定義 |
| 既定のコンパイラ選択をオーバーライドします。
|
| シンボル情報を追加し、ビルドされるオブジェクト コードの最適化を無効にします。デバッグに使用します。 |
|
|
|
|
| ダイナミック オブジェクト ライブラリ MATLAB は
使用する場合、
スタティック ライブラリをリンクするには、入力引数 |
|
|
| オブジェクト コードを最適化します。最適化を使用してコンパイルするには、このオプションを使用します。最適化は既定で有効になっています。 このオプションは大文字の O で指定します。 |
| すべての出力ファイルをフォルダー |
| 既定の MEX ファイル命名メカニズムをオーバーライドします。適切な MEX ファイル拡張子をもつ、 |
|
|
| 情報を伝えるメッセージを非表示にします。 |
| C プリプロセッサ マクロの
|
| 詳細モードでビルドします。すべてのコマンド ライン引数が処理された後、内部変数の値を表示します。コンパイルおよびリンクの各ステップのすべての評価を表示します。コンパイラ設定の問題のトラブルシューティングに使用します。 |
| 環境変数 例:
|
lang
— 言語
C
(既定値) | C++
| CPP
| Fortran
言語。次の値のいずれか (大文字小文字は区別されない) として指定します。
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
mexw64
Linux
mexa64
Apple シリコン搭載の macOS
mexmaca64
Intel® 搭載の macOS
mexmaci64
メモ
Intel を搭載した macOS でビルドされた MEX ファイルは、Rosetta 2 を使用する Apple シリコン プラットフォームではサポートされていません。
mex
を使用してスタンドアロンの MATLAB エンジン アプリケーションの実行可能ファイルをビルドするには、-client engine
オプションを使用してください。mex
コマンドは、二重引用符 ("
) を含むフォルダー名をサポートしません。
バージョン履歴
R2006a より前に導入R2023b: Microsoft Visual Studio Build Tools のサポート
MATLAB では、Windows プラットフォームで C および C++ インターフェイス、MEX ファイル、スタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための、C および C++ 用の Build Tools for Visual Studio 2022 および 2019 がサポートされています。サポートされているコンパイラの最新の一覧については、サポートされるコンパイラを参照してください。
R2023b: Apple シリコン プラットフォームでの NAG Fortran のサポート
MATLAB では、Apple シリコン プラットフォームで Fortran MEX ファイルおよびスタンドアロン MATLAB エンジンおよび MAT ファイル アプリケーションをビルドするための NAG® Fortran コンパイラがサポートされています。
R2023a: MinGW-w64 version 8.1 コンパイラのサポート
MATLAB では、Windows プラットフォームで MinGW-w64 version 8.1 コンパイラがサポートされています。インストールの説明については、次の MATLAB Answers™ の記事を参照してください。FAQ: How do I install the MinGW compiler?
R2023a: Intel oneAPI コンパイラのサポート
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 ファイル アプリケーション
R2023a: -std=c++11
フラグを MEX オプション ファイルから削除
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'
R2022a: Windows プラットフォームでの UTF-8 システム エンコード
MATLAB は Windows でのシステム エンコードとして UTF-8 を使用するようになり、サポートするすべてのプラットフォームにわたって Unicode® の採用を完了しました。MEX ファイル内から行われるシステム呼び出しは、UTF-8 でエンコードされた文字列を取得して返します。MEX ファイルに、別のシステム エンコードを想定しているコードまたはサードパーティ ライブラリへのリンクが含まれる場合は、文字化けしたテキストが表示される可能性があるため、コードを Unicode 準拠に更新する必要があります。
R2022a: MEX ファイル マクロ FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
を削除
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: Microsoft Visual Studio 2022 コンパイラのサポート
R2021b Update 3 以降、MATLAB は、C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドで Microsoft Visual Studio 2022 をサポートしています。
R2020b: Linux プラットフォームでの gcc version 5.x 以降のサポート
MATLAB は、Linux プラットフォームでの C/C++ インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドで gcc version 5.x 以降をサポートしています。version 4.0 以前を使用している場合、MATLAB は警告を表示します。
R2020a: macOS および Linux のプラットフォームでの UTF-8 システム エンコード
macOS および Linux のプラットフォームで、MATLAB はシステム エンコードに UTF-8 を使用します。macOS または Linux でビルドされた MEX ファイル内から行われるシステム呼び出しは、UTF-8 でエンコードされた文字列を取得して返します。MEX ファイルに、別のシステム エンコードを想定しているコードまたはサードパーティ ライブラリへのリンクが含まれる場合は、文字化けしたテキストが表示される可能性があるため、コードを Unicode 準拠に更新する必要があります。
Windows プラットフォームでは、Windows の [地域] 設定で [ワールドワイド言語サポートで Unicode UTF-8 を使用] オプションが有効になっている場合、MATLAB は UTF-8 をシステム エンコードとして使用します。
R2020a: コンパイラのサポートの変更
次の表に、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 |
R2019b: コンパイラのサポートの変更
次の表に、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 |
R2019b: C MEX アプリケーションおよびエンジン アプリケーション: <stdbool.h>
で定義される true
、false
、および bool
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
は1
false
—#defined
は0
bool
—typedef
はunsigned char
macOS プラットフォームについて、変更はありません。
R2019a: Intel Parallel Studio XE 2019 コンパイラのサポート
次の表に、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 |
R2018b: インターリーブされた複素数 API を使用した Fortran MEX ファイルのビルド
Fortran 行列 APIは、インターリーブされた複素数格納表現をサポートしています。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
Fortran MEX 関数をビルドする場合は、インターリーブされた複素数 API を使用するために MEX ファイルをアップグレードする必要があるかを確認してください。
メモ
R2018a で、インターリーブされた複素数 API によってビルドされた Fortran MEX ファイルを実行するには、R2018a Update 3 を使用しなければなりません。
R2018b: コンパイラのサポートの変更
次の表に、C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB におけるコンパイラのサポートの変更を示します。
作成したアプリケーションのビルドのサポートを継続するには、Supported and Compatible Compilers – Release 2018b に記載されている、サポートされるコンパイラへのアップグレードを検討してください。
サポート | コンパイラ | プラットフォーム |
---|---|---|
追加 | MinGW-w64 version 6.3.0 コンパイラ (https://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 |
R2018a: C++ から MATLAB のデータとオブジェクトへのより容易なアクセス
大規模なデータ配列をより高速に処理するには、最新の C++ 設計パターン、拡張データ型のサポート、および MATLAB のコピーオンライト セマンティクスを使用して、MEX 関数を作成します。詳細については、MATLAB (MEX ファイル) から呼び出せる C++ 関数の記述を参照してください。
R2017b 以前で機能する MEX ファイルを必要とせず、最新の C++ に精通している場合は、新しいC++ MEX APIおよびC++ 用の MATLAB データ APIの使用を検討してください。C 言語で作業する方が好ましい場合は、引き続き C MEX API および C 行列 API を使用してください。
R2018a: インターリーブされた複素数 API による C MEX ファイルのビルド
MATLAB は、"インターリーブ" された複素数格納表現をサポートしています。用語 "インターリーブされた複素数" は、実数部と虚数部が共に格納される、この表現を指します。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
C MEX 関数、C/C++ MEX S-Function、またはスタンドアロンの MATLAB エンジン アプリケーションや MAT ファイル アプリケーションをビルドする場合には、インターリーブされた複素数 API を使用するために MEX ファイルをアップグレードする必要があるかを確認してください。MATLAB は、Fortran 関数についてインターリーブされた複素数 API をサポートしていません。
この変更は MATLAB 言語に影響しません。関数とスクリプトを変更することなく、複素数に記載の機能を引き続き使用できます。
R2018a: リリース固有のビルド オプション
mex
コマンドに新しいビルド オプション -R2017b
および -R2018a
が追加されました。これらはC 行列 APIのリリース固有のバージョンにリンクされています。
-R2017b
— 既定のオプション。このオプションは、次のコマンドと同等です。mex mymex.c -largeArrayDims -DMEX_DOUBLE_HANDLE
-R2018a
— 型付きのデータ アクセス関数を含む、インターリーブされた複素数 API を使用します。詳細については、MATLAB の MEX 関数におけるインターリーブされた複素数 API のサポートを参照してください。
R2018a: Boost ライブラリのバージョンの指定
R2018a 以降、MATLAB はビルドに Boost ライブラリ version 1.56.0 を使用していますが、MEX 関数に任意の Boost ライブラリのバージョンを指定できます。
R2018a: コンパイラのサポートの変更
次の表に、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 |
R2017b: コンパイラのサポートの変更
次の表に、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://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 |
R2017a: 既定で 64 ビット API を使用して MEX をビルド
関数 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 | 変更なし。 |
R2017a: コンパイラのサポートの変更
C インターフェイス、MEX ファイル、およびスタンドアロンの MATLAB エンジン アプリケーションと MAT ファイル アプリケーションのビルドに関して、MATLAB には次の表に示すコンパイラのサポートが追加されました。
サポート | コンパイラ | プラットフォーム |
---|---|---|
追加 | Intel Parallel Studio XE 2017 | Windows |
追加 | Intel Parallel Studio XE 2017 (Fortran) | macOS |
追加 | Xcode 8.x、R2016b 以降 | macOS |
R2016b: MEX ファイルに組み込まれるバージョン
mex
コマンドは、MATLAB R2016b 以降でビルドされた MEX ファイルに MEX バージョン番号を組み込みます。この番号は、実行時に MEX 関数がリンク対象として想定する行列 API のバージョンを示します。
mex
コマンドを使用しない場合は、MEX ファイルのビルドに使用するコマンドを更新する必要があります。詳細については、Compiling MEX Files without the mex Command を参照してください。
R2016b: コンパイラのサポートの変更
次の表に、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 |
R2016a: MEX コマンドはコンパイラ オプション ファイル .bat
または .sh
を受け入れない
mex
コマンドの -f
オプションは、ファイル拡張子 .bat
または .sh
をもつ引数を受け入れません。
-f
オプションを使用してコンパイラを指定する代わりに、既定のコンパイラの変更に記載されているワークフローを使用してください。
mex
コマンドのオプションを使用して、コンパイラのビルド オプションを変更できます。たとえば、-L
オプションと -I
オプションを使用して、システム上のライブラリを見つけます。
オプションを使用して、コンパイラにオプションを渡します。varname
=varvalue
R2016a: コンパイラのサポートの変更
次の表に、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 コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)