mex
MEX 함수 및 엔진 애플리케이션 또는 MAT 파일 애플리케이션 빌드
구문
설명
mex 는 C++용 MATLAB Data API로 작성한 하나 이상의 C++ 소스 파일을 컴파일하고 현재 폴더의 이진 MEX 파일로 링크합니다. 이러한 애플리케이션의 작성에 대한 자세한 내용은 MATLAB에서 호출 가능한 C++ 함수 작성하기(MEX 파일) 항목을 참조하십시오.filenames
C Matrix API 또는 Fortran Matrix API 항목을 기반으로 MEX 파일을 작성하는 경우 mex 는 filenames-R2017b api를 사용하여 하나 이상의 C, C++ 또는 Fortran 소스 파일을 빌드합니다. MATLAB®의 향후 버전에서는 디폴트 api 옵션이 실수부/허수부 결합형 복소수 API(-R2018a)를 사용하도록 변경됩니다. MathWorks는 실수부/허수부 결합형 복소수 API를 사용하도록 MEX 파일을 생성하고 기존 MEX 파일을 업데이트할 것을 권장합니다. 또는 MX_HAS_INTERLEAVED_COMPLEX 매크로를 사용하여 여러 MATLAB 버전에서 의도한 동작이 적용되도록 하십시오. 자세한 내용은 MATLAB Support for Interleaved Complex API in MEX Functions 항목을 참조하십시오.
C, C++ 및 Fortran 애플리케이션 작업에 대한 자세한 내용은 MATLAB과 외부 프로그래밍 언어 및 시스템 통합하기 항목을 참조하십시오.
mex 은 지정된 filenames api option1 ... optionNapi와 선택적으로 option1 ... optionN 인수를 사용하여 빌드합니다. 인수 option1 ... optionN은 디폴트 mex 빌드 구성을 보조하거나 재정의합니다.
mex -client engine 는 C++용 MATLAB Data API로 작성한 C++ 소스 파일을 독립형 MATLAB 엔진 또는 MAT 파일 애플리케이션으로 빌드합니다. 자세한 내용은 Structure of C++ Engine Applications 항목을 참조하십시오.filenames
C용 MATLAB Engine API, C MAT 파일 API, Fortran Engine API 또는 Fortran MAT 파일 API 기반으로 애플리케이션을 작성하는 경우 mex -client engine 는 filenames-R2017b api를 사용하여 독립형 애플리케이션을 빌드합니다. MATLAB의 향후 버전에서는 디폴트 api 옵션이 실수부/허수부 결합형 복소수 API(-R2018a)를 사용하도록 변경됩니다. MathWorks는 실수부/허수부 결합형 복소수 API를 사용하도록 엔진 또는 MAT 파일 애플리케이션을 생성하고 기존 애플리케이션을 업데이트할 것을 권장합니다.
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
플랫폼별로 문자열 구분 기호를 사용하는 방법에 대한 자세한 내용은 디폴트 컴파일러 전환 옵션 재정의 항목을 참조하십시오.
기존 컴파일러 플래그에 값 -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는 두 개의 Fortran 소스 파일인 loadsparse.F와 fulltosparse.F로 구성됩니다. 이 예제를 실행하려면 지원되는 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로 결합합니다. -output 옵션을 사용하여 MEX 파일의 이름을 제어합니다.
mex -output mymex *.c
명령을 실행하지 않고 빌드 명령 세부 정보를 미리 보기 위해 -n 옵션을 사용합니다. 출력값에 사용자의 플랫폼과 컴파일러 관련 정보가 표시됩니다.
mex -n yprime.c
소스 MEX 파일과 별개로 컴파일되는 오브젝트 파일에 링크할 수 있습니다.
MEX 파일 예제 fulltosparse는 두 개의 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.
-I 옵션을 사용하여, 복소수 루틴을 처리하는 MATLAB LAPACK 라이브러리 서브루틴을 포함할 경로를 지정할 수 있습니다. 이 서브루틴을 사용하려면 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)
-L 옵션과 -l 옵션을 사용하여 libmwlapack.lib 라이브러리를 지정함으로써 Windows 플랫폼에서 matrixDivide.c 예제를 빌드합니다. 이 라이브러리 파일은 폴더 에 있습니다.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 서버로 등록해야 합니다. 자세한 내용은 MATLAB을 COM 서버로 등록하기 항목을 참조하십시오.
예제를 실행합니다.
!engwindemomex -setupMATLAB이 사용자의 버전과 시스템에 맞는 옵션을 지원 및 호환되는 컴파일러 목록을 기반으로 하여 표시합니다.
mex 링크 명령에 옵션을 추가하려면 LINKFLAGS 명령줄 옵션을 사용하십시오. 예를 들어, Windows에서 mymex.c를 빌드할 때 실행 파일에 대한 환경을 지정하려면 다음을 입력합니다.
mex -v LINKFLAGS='$LINKFLAGS /subsystem:windows' mymex.c
입력 인수
하나 이상의 파일 이름으로, 이름과 파일 확장자를 포함하며 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 Matrix API 또는 Fortran Matrix API와 링크되며, 다음 표에 있는 값 중 하나로 지정됩니다. 이러한 옵션은 함께 사용하지 마십시오.
C++용 MATLAB Data API를 사용하는 MEX 파일 또는 엔진 애플리케이션이나 MAT 파일 애플리케이션에 이 옵션을 사용하지 마십시오.
| API | 설명 |
|---|---|
| 빌드 환경:
MATLAB의 향후 버전에서는 디폴트 |
-R2018a | 빌드 환경:
실수부/허수부 결합형 복소수 API를 사용하여 빌드한 Fortran MEX 파일을 R2018a에서 실행하려면 R2018a 업데이트 3을 사용해야 합니다. |
-largeArrayDims | 빌드 환경:
|
-compatibleArrayDims | 빌드 환경:
LAPACK 함수나 BLAS 함수를 호출할 때는 C MEX S-Function에만 사용되는 디폴트 옵션입니다. |
예: mex -R2018a explore.c
선택적 빌드 옵션으로, 이 표에 있는 값 중 하나로 지정됩니다. 옵션은 따로 표시된 경우를 제외하고 모든 플랫폼에서 어떤 순서로든 나타날 수 있습니다.
| 옵션 | 설명 |
|---|---|
| Windows RSP 파일을 사용합니다. RSP 파일은 명령줄 옵션이 포함된 텍스트 파일입니다. 비ASCII 문자는 지원되지 않습니다. |
| 오브젝트 파일만 컴파일합니다. 이진 MEX 파일은 빌드하지 않습니다. |
| 엔진 애플리케이션 또는 MAT 파일 애플리케이션을 빌드합니다. |
|
D나 U와 |
| 디폴트 컴파일러 선택 사항을 재정의합니다.
|
| 기호화된 정보를 추가하고 빌드된 오브젝트 코드 최적화를 비활성화합니다. 디버그에 사용하십시오. |
|
|
|
|
|
MATLAB은
사용되는 경우, 소문자 L을 사용하여 정적 라이브러리를 링크하려면 |
|
예: 빌드 명령 미리보기 |
| 오브젝트 코드를 최적화합니다. 최적화를 사용하여 컴파일하려면 이 옵션을 사용하십시오. 최적화는 기본적으로 사용됩니다. 대문자 O를 사용하여 이 옵션을 지정하십시오. |
| 모든 출력 파일을 폴더 |
| 디폴트 MEX 파일 명명 메커니즘을 재정의합니다. 적절한 MEX 파일 확장자를 가지며 이름이 |
|
|
| 정보 메시지를 표시하지 않습니다. |
| C 전처리기 매크로의 초기 정의
|
| 세부 정보 표시 모드로 빌드합니다. 모든 명령줄 인수를 고려한 후 내부 변수의 값을 표시합니다. 완전히 실행한 각각의 컴파일과 링크 단계를 표시합니다. 컴파일러 설치 문제를 해결하는 데 사용합니다. |
| 환경 변수 예제:
|
언어로, 대/소문자를 구분하지 않는 다음 값 중 하나로 지정됩니다.
C | C 컴파일러. C++ 포함. |
C++ 또는 CPP | C++ 컴파일러 |
Fortran | Fortran 컴파일러 |
팁
다음 위치에서
mex를 실행할 수 있습니다.MATLAB 명령 창
Windows 시스템 프롬프트
macOS 터미널
Linux 셸
MATLAB 외부에서 명령줄을 사용할 수 있도록,
mex프로그램은[matlabroot '/bin'](UNIX) 또는[matlabroot '\bin\win64'](Windows)로 지정된 폴더에 놓입니다.MEX 파일은 플랫폼별 확장자를 가집니다. 그러므로, 서로 다른 플랫폼용 이진 MEX 파일을 같은 폴더에 넣는 것이 가능합니다. MEX 파일 확장자를 식별하려면
mexext함수를 사용하십시오.플랫폼별 MEX 파일 확장자
플랫폼 이진 MEX 파일 확장자 Windows
mexw64Linux
mexa64Apple Silicon이 탑재된 macOS
mexmaca64Intel®이 탑재된 macOS
mexmaci64참고
Intel이 탑재된 macOS에서 빌드된 MEX 파일은 Rosetta 2를 사용하는 Apple Silicon 플랫폼에서 지원되지 않습니다.
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++용 Visual Studio 2022 및 2019을 위한 빌드 툴을 지원합니다.
MATLAB은 Apple Silicon 플랫폼에서 Fortran MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션을 빌드할 수 있도록 NAG® Fortran 컴파일러를 지원합니다.
MATLAB은 Windows 플랫폼에서 MinGW-w64 버전 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가 포함되어 있습니다.
MEX 파일 myFunc를 빌드할 때 여전히 -std=c++11 옵션을 사용하려면 다음을 입력하십시오.
mex myFunc.cpp 'CXXFLAGS=$CXXFLAGS -std=c++11'
이제 MATLAB은 Windows에서 UTF-8을 시스템 인코딩으로 사용하며, 지원되는 모든 플랫폼에 예외 없이 Unicode®를 채택합니다. MEX 파일 내에서 발생하는 시스템 호출은 UTF-8 인코딩 문자열을 받고 반환합니다. MEX 파일에 다른 시스템 인코딩을 취하는 타사 라이브러리에 대한 코드나 링크가 포함된 경우 텍스트가 깨져 표시될 수 있으므로 Unicode 규격을 준수하도록 코드를 업데이트해야 합니다.
R2021b 이하에서 작성된 MEX 파일의 경우 MATLAB은 복소수를 Fortran BLAS 및 LAPACK 함수에 전달하기 위해 플랫폼별 호출 구문 차이를 처리하는 매크로 FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID를 제공했습니다. 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 업데이트 3부터 MATLAB은 C 및 C++ 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션 빌드를 위한 Microsoft Visual Studio 2022를 지원합니다.
MATLAB은 Linux에서 C 및 C++ 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션 빌드를 위한 gcc 버전 5.x 이상을 지원합니다. 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를1로false—#defined를0으로bool—typedef를unsigned char로
macOS 플랫폼의 경우에는 변경 사항이 없습니다.
다음 표에는 C 및 C++ 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션을 빌드하기 위해 MATLAB에 추가된 Intel 컴파일러 지원 사항이 나와 있습니다.
| 지원 | 컴파일러 | 플랫폼 |
|---|---|---|
추가됨 | Intel Parallel Studio XE 2019 with Microsoft Visual Studio 2015 및 2017(C, C++ 및 Fortran용) | Windows |
추가됨 | Intel Parallel Studio XE 2019(Fortran용) | macOS |
Fortran Matrix API는 복소수의 실수부/허수부 결합형 저장 표현을 지원합니다. 자세한 내용은 MATLAB Support for Interleaved Complex API in MEX Functions 항목을 참조하십시오.
Fortran MEX 함수를 빌드하는 경우에는 Do I Need to Upgrade My MEX Files to Use Interleaved Complex API? 항목을 검토하십시오
참고
실수부/허수부 결합형 복소수 API를 사용하여 빌드한 Fortran MEX 파일을 R2018a에서 실행하려면 R2018a 업데이트 3을 사용해야 합니다.
다음 표에는 C 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션을 빌드하기 위해 MATLAB에서 지원되는 컴파일러에 대한 변경 사항이 나와 있습니다.
애플리케이션 빌드에 대한 지원을 계속해서 받으려면 Supported and Compatible Compilers – Release 2018b에 나와 있는 지원되는 컴파일러로 업그레이드하는 것을 고려해 보십시오.
| 지원 | 컴파일러 | 플랫폼 |
|---|---|---|
추가됨 | https://www.mingw-w64.org/에서 제공하는 MinGW-w64 버전 6.3.0 컴파일러 | Windows |
추가됨 | Intel Parallel Studio XE 2018 with Microsoft Visual Studio 2015 및 2017(C, C++ 및 Fortran용) | Windows |
추가됨 | Intel Parallel Studio XE 2018(Fortran용) | macOS |
중단됨 | Microsoft Visual C++® 2013 Professional | Windows |
대규모 데이터 배열을 더 빠르게 처리하기 위해 최신 C++ 설계 패턴, 확장된 데이터형 지원, MATLAB 쓰기 시 복사(copy-on-write) 의미 체계를 사용하여 MEX 함수를 작성할 수 있습니다. 자세한 내용은 MATLAB에서 호출 가능한 C++ 함수 작성하기(MEX 파일) 항목을 참조하십시오.
R2017b 이하 버전에서 작동하는 MEX 파일이 필요하지 않고 최신 C++에 익숙하다면 새로운 C++ MEX API 및 C++용 MATLAB Data API의 사용을 고려해 보십시오. C 언어로 작업하는 게 더 편하다면 C MEX API와 C Matrix API를 계속 사용하십시오.
MATLAB은 복소수에 대해 실수부/허수부 결합형 저장 표현을 사용합니다. 실수부/허수부 결합형 복소수라는 용어가 바로 이 표현을 가리키는데, 실수부와 허수부가 함께 저장되는 것을 의미합니다. 자세한 내용은 MATLAB Support for Interleaved Complex API in MEX Functions 항목을 참조하십시오.
C MEX 함수, C/C++ MEX S-Function 또는 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션을 빌드하는 경우에는 Do I Need to Upgrade My MEX Files to Use Interleaved Complex API? 항목을 검토해 보십시오. MATLAB은 Fortran 함수에 대해 실수부/허수부 결합형 복소수 API를 지원하지 않습니다.
이 변경 사항은 MATLAB 언어에 영향을 미치지 않습니다. 함수와 스크립트의 수정 없이 복소수에 설명되어 있는 기능을 계속 사용할 수 있습니다.
mex 명령에 C Matrix API를 릴리스별 버전으로 링크하는 새로운 빌드 옵션 -R2017b와 -R2018a가 추가되었습니다.
-R2017b— 디폴트 옵션. 이 옵션은 다음 명령과 동일합니다.mex mymex.c -largeArrayDims -DMEX_DOUBLE_HANDLE
-R2018a— 실수부/허수부 결합형 복소수 API를 사용합니다. 여기에는 지정된 데이터형으로 데이터에 액세스하는 함수가 포함되어 있습니다. 자세한 내용은 MATLAB Support for Interleaved Complex API in MEX Functions 항목을 참조하십시오.
MATLAB은 Boost 라이브러리 버전 1.56.0으로 빌드하지만, R2018a부터 MEX 함수에 어떤 Boost 라이브러리 버전이든 지정할 수 있습니다.
다음 표에는 C 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션을 빌드하기 위해 MATLAB에서 지원되는 컴파일러에 대한 변경 사항이 나와 있습니다.
애플리케이션 빌드에 대한 지원을 계속해서 받으려면 Supported and Compatible Compilers – Release 2018a에 나와 있는 지원되는 컴파일러로 업그레이드하는 것을 고려해 보십시오.
| 지원 | 컴파일러 | 플랫폼 |
|---|---|---|
추가됨 | GNU® gcc 및 gfortran 버전 6.x. 버전 6.3을 권장함. | Linux |
중단됨 | GNU gcc 및 gfortran 버전 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 |
추가됨 | Visual Studio 2017에 설치된 Microsoft Visual Studio 2015(v140) 툴셋 | Windows |
추가됨 | https://www.mingw-w64.org/에서 제공하는 MinGW-w64 버전 5.3.0 컴파일러 | Windows |
추가됨 | Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2017(C, C++ 및 Fortran용) | Windows |
중단됨 | TDM-GCC에서 제공하는 MinGW-w64 버전 4.9.2 컴파일러 | Windows |
중단됨 | Microsoft Visual C++ 2012 Professional | Windows |
| 중단됨 | Microsoft Windows SDK 7.1 | Windows |
단계적으로 중단될 예정임 | 향후 릴리스에서는 GNU gcc 및 gfortran 버전 4.9에 대한 지원이 중단되고 새로운 버전이 지원될 예정입니다. | Linux |
mex 함수는 기본적으로 대규모 배열 처리 API(-largeArrayDims 옵션)를 사용합니다. 가장 바람직한 방법은 이 라이브러리를 사용하도록 MEX 소스 코드를 업데이트하고 MEX 파일을 재빌드하는 것입니다. 자세한 지침은 Upgrade MEX Files to Use Interleaved Complex API 항목을 참조하십시오.
재빌드하지 않고 기존 이진 MEX 파일을 실행할 수 있습니다. 자세한 내용은 MEX 버전 호환성 항목을 참조하십시오.
mex 명령 옵션 -largeArrayDims 또는 -compatibleArrayDims 명령 옵션을 사용하지 않고 MEX 파일을 빌드하는 경우 다음 표를 검토하여 R2017a에서 변경되는 디폴트 동작에 따라 달라지지 않도록 하십시오. MEX 파일 빌드에 -compatibleArrayDims 옵션을 사용하는 경우의 결과에 대해서는 What If I Do Not Upgrade? 항목을 참조하십시오
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 | 변경 사항 없음. |
MATLAB은 C 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션의 빌드를 위해 다음 표의 컴파일러 지원을 추가했습니다.
| 지원 | 컴파일러 | 플랫폼 |
|---|---|---|
추가됨 | Intel Parallel Studio XE 2017 | Windows |
추가됨 | Intel Parallel Studio XE 2017(Fortran용) | macOS |
추가됨 | Xcode 8.x(R2016b부터) | macOS |
mex 명령은 MATLAB R2016b 이상에서 빌드한 MEX 파일에 MEX 버전 번호를 포함합니다. 이 번호를 통해 MEX 함수가 런타임에 링크해야 하는 Matrix API의 버전을 식별합니다.
mex 명령을 사용하지 않는 경우에는 MEX 파일을 빌드하는 데 사용하는 명령을 업데이트해야 합니다. 자세한 내용은 Compiling MEX Files without the mex Command 항목을 참조하십시오.
다음 표에는 C 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진 애플리케이션과 MAT 파일 애플리케이션을 빌드하기 위해 MATLAB에서 지원되는 컴파일러에 대한 변경 사항이 나와 있습니다.
애플리케이션 빌드에 대한 지원을 계속해서 받으려면 Supported and Compatible Compilers – Release 2016b에 나와 있는 지원되는 컴파일러로 업그레이드하는 것을 고려해 보십시오.
| 지원 | 컴파일러 | 플랫폼 |
|---|---|---|
추가됨 | GNU gcc 및 gfortran 버전 4.9 | Linux |
중단됨 | GNU gcc 및 gfortran 버전 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.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 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)