이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
mex
MEX 함수 또는 엔진 애플리케이션 빌드
구문
설명
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 ... optionN
api
와 선택적으로 option1 ... optionN
인수를 사용하여 빌드합니다. 인수 option1 ... optionN
은 디폴트 mex
빌드 구성을 보조하거나 재정의합니다.
mex -client engine
는 C++용 MATLAB Data API로 작성한 C++ 소스 파일을 독립형 MATLAB 엔진 애플리케이션으로 빌드합니다. 자세한 내용은 C++ 엔진 프로그램의 요소 항목을 참조하십시오.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를 사용하도록 엔진 애플리케이션을 생성하고 기존 애플리케이션을 업데이트할 것을 권장합니다.
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
플랫폼별로 문자열 구분 기호를 사용하는 방법에 대한 자세한 내용은 디폴트 컴파일러 전환 옵션 재정의 항목을 참조하십시오.
디폴트 컴파일러 전환 옵션 재정의
기존 컴파일러 플래그에 값 -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
는 두 개의 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 서버로 등록하기 항목을 참조하십시오.
예제를 실행합니다.
!engwindemo
C 컴파일러 선택
mex -setup
MATLAB이 사용자의 버전과 시스템에 맞는 옵션을 지원 및 호환되는 컴파일러 목록을 기반으로 하여 표시합니다.
링크 명령 옵션
mex
링크 명령에 옵션을 추가하려면 LINKFLAGS
명령줄 옵션을 사용하십시오. 예를 들어, Windows에서 mymex.c
를 빌드할 때 실행 파일에 대한 환경을 지정하려면 다음을 입력합니다.
mex -v LINKFLAGS='$LINKFLAGS /subsystem:windows' mymex.c
입력 인수
filenames
— 하나 이상의 파일 이름
string형 | 문자형 벡터
하나 이상의 파일 이름으로, 이름과 파일 확장자를 포함하며 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 Matrix API 또는 Fortran Matrix API와 링크되며, 다음 표에 있는 값 중 하나로 지정됩니다. 이러한 옵션은 함께 사용하지 마십시오.
C++용 MATLAB Data API를 사용하는 MEX 파일 또는 엔진 애플리케이션에 이 옵션을 사용하지 마십시오.
API | 설명 |
---|---|
| 빌드 환경:
MATLAB의 향후 버전에서는 디폴트 |
-R2018a | 빌드 환경:
실수부/허수부 결합형 복소수 API를 사용하여 빌드한 Fortran MEX 파일을 R2018a에서 실행하려면 R2018a 업데이트 3을 사용해야 합니다. |
-largeArrayDims | 빌드 환경:
|
-compatibleArrayDims | 빌드 환경:
LAPACK 함수나 BLAS 함수를 호출할 때는 C MEX S-Function에만 사용되는 디폴트 옵션입니다. |
예: mex -R2018a explore.c
option1 ... optionN
— 선택적 빌드 옵션
유효한 옵션 플래그에 해당하는 string형이나 문자형 벡터
선택적 빌드 옵션으로, 이 표에 있는 값 중 하나로 지정됩니다. 옵션은 따로 표시된 경우를 제외하고 모든 플랫폼에서 어떤 순서로든 나타날 수 있습니다.
옵션 | 설명 |
---|---|
| Windows RSP 파일을 사용합니다. RSP 파일은 명령줄 옵션이 포함된 텍스트 파일입니다. 비ASCII 문자는 지원되지 않습니다. |
| 오브젝트 파일만 컴파일합니다. 이진 MEX 파일은 빌드하지 않습니다. |
| 엔진 애플리케이션을 빌드합니다. |
|
D나 U와 |
| 디폴트 컴파일러 선택 사항을 재정의합니다.
|
| 기호화된 정보를 추가하고 빌드된 오브젝트 코드 최적화를 비활성화합니다. 디버그에 사용하십시오. |
|
|
|
|
|
MATLAB은
사용되는 경우, 소문자 L을 사용하여 정적 라이브러리를 링크하려면 |
|
예: 빌드 명령 미리보기 |
| 오브젝트 코드를 최적화합니다. 최적화를 사용하여 컴파일하려면 이 옵션을 사용하십시오. 최적화는 기본적으로 사용됩니다. 대문자 O를 사용하여 이 옵션을 지정하십시오. |
| 모든 출력 파일을 폴더 |
| 디폴트 MEX 파일 명명 메커니즘을 재정의합니다. 적절한 MEX 파일 확장자를 가지며 이름이 |
|
|
| 정보 메시지를 표시하지 않습니다. |
| C 전처리기 매크로의 초기 정의
|
| 세부 정보 표시 모드로 빌드합니다. 모든 명령줄 인수를 고려한 후 내부 변수의 값을 표시합니다. 완전히 실행한 각각의 컴파일과 링크 단계를 표시합니다. 컴파일러 설치 문제를 해결하는 데 사용합니다. |
| 환경 변수 예제:
|
lang
— 언어
C
(디폴트 값) | C++
| CPP
| Fortran
언어로, 대/소문자를 구분하지 않는 다음 값 중 하나로 지정됩니다.
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
mexw64
Linux
mexa64
Apple Silicon이 탑재된 macOS
mexmaca64
Intel®이 탑재된 macOS
mexmaci64
참고
Intel이 탑재된 macOS에서 빌드된 MEX 파일은 Rosetta 2를 사용하는 Apple Silicon 플랫폼에서 지원되지 않습니다.
mex
를 사용하여 독립 실행형 MATLAB 엔진 애플리케이션을 위한 실행 파일을 빌드하려면-client engine
옵션을 사용하십시오.mex
명령에는 큰따옴표("
) 문자를 포함하는 폴더 이름이 지원되지 않습니다.
버전 내역
R2006a 이전에 개발됨R2023b: Microsoft Visual Studio 빌드 툴 지원
MATLAB은 Windows 플랫폼에서 C 및 C++ 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진, MAT 파일 애플리케이션을 빌드할 수 있도록 C 및 C++용 Visual Studio 2022 및 2019을 위한 빌드 툴을 지원합니다. 지원되는 컴파일러의 최신 목록을 보려면 지원 및 호환되는 컴파일러를 참조하십시오.
R2023b: Apple Silicon 플랫폼에서 NAG Fortran 지원
MATLAB은 Apple Silicon 플랫폼에서 Fortran MEX 파일, 독립 실행형 MATLAB 엔진 및 MAT 파일 애플리케이션을 빌드할 수 있도록 NAG® Fortran 컴파일러를 지원합니다.
R2023a: MinGW-w64 버전 8.1 컴파일러 지원
MATLAB은 Windows 플랫폼에서 MinGW-w64 버전 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: MEX 옵션 파일에서 -std=c++11
플래그가 제거됨
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'
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 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: MicrosoftVisual Studio 2022 컴파일러 지원
R2021b 업데이트 3부터 MATLAB은 C 및 C++ 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진, MAT 파일 애플리케이션 빌드를 위한 Microsoft Visual Studio 2022를 지원합니다.
R2020b: Linux 플랫폼에서 gcc 버전 5.x 이상 지원
MATLAB은 Linux에서 C 및 C++ 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진, MAT 파일 애플리케이션 빌드를 위한 gcc 버전 5.x 이상을 지원합니다. 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 with Microsoft Visual Studio 2015 및 2017(C, C++ 및 Fortran용) | Windows |
추가됨 | Intel Parallel Studio XE 2019(Fortran용) | macOS |
R2018b: 실수부/허수부 결합형 복소수 API로 Fortran MEX 파일 빌드
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을 사용해야 합니다.
R2018b: 컴파일러 지원이 변경됨
다음 표에는 C 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진, MAT 파일 애플리케이션을 빌드하기 위해 MATLAB에서 지원되는 컴파일러에 대한 변경 사항이 나와 있습니다.
애플리케이션 빌드에 대한 지원을 계속해서 받으려면 Supported and Compatible Compilers – Release 2018b에 나와 있는 지원되는 컴파일러로 업그레이드하는 것을 고려해 보십시오.
지원 | 컴파일러 | 플랫폼 |
---|---|---|
추가됨 | https://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 |
R2018a: C++에서 더 쉽게 MATLAB 데이터 및 객체에 액세스
대규모 데이터 배열을 더 빠르게 처리하기 위해 최신 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를 계속 사용하십시오.
R2018a: 실수부/허수부 결합형 복소수 API로 C MEX 파일 빌드
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 언어에 영향을 미치지 않습니다. 함수와 스크립트의 수정 없이 복소수에 설명되어 있는 기능을 계속 사용할 수 있습니다.
R2018a: 릴리스별 빌드 옵션
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 항목을 참조하십시오.
R2018a: Boost 라이브러리의 버전 지정
MATLAB은 Boost 라이브러리 버전 1.56.0으로 빌드하지만, R2018a부터 MEX 함수에 어떤 Boost 라이브러리 버전이든 지정할 수 있습니다.
R2018a: 컴파일러 지원이 변경됨
다음 표에는 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 |
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 |
추가됨 | Visual Studio 2017에 설치된 Microsoft Visual Studio 2015(v140) 툴셋 | Windows |
추가됨 | https://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 |
R2017a: MEX 빌드에 기본적으로 64비트 API를 사용함
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 | 변경 사항 없음. |
R2017a: 컴파일러 지원이 변경됨
MATLAB은 C 인터페이스, MEX 파일, 독립 실행형 MATLAB 엔진, MAT 파일 애플리케이션의 빌드를 위해 다음 표의 컴파일러 지원을 추가했습니다.
지원 | 컴파일러 | 플랫폼 |
---|---|---|
추가됨 | 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 함수가 런타임에 링크해야 하는 Matrix 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 버전 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 |
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 명령 창에 입력하십시오. 웹 브라우저는 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)