C++ 컴파일 라이브러리에서 함수 호출하기
C++ 라이브러리에 대한 MATLAB® 인터페이스의 퍼블리셔는 필요하다면 인터페이스 파일과 종속 라이브러리 파일의 설치 지침을 제공합니다. 퍼블리셔는 종속 라이브러리 파일을 제공하거나 외부 소스로부터 라이브러리를 설치하도록 요청하거나 모든 관련 파일에 대한 링크를 제공할 수 있습니다. 퍼블리셔가 MATLAB 애드온을 사용하여 툴박스를 만든 경우, 이 정보는 애드온 매니저에서 툴박스에 대한 옵션 메뉴를 통해 제공되는 시작하기 안내서에서 볼 수 있습니다. 추가 정보가 필요하거나 시작하기 안내서를 찾을 수 없는 경우 퍼블리셔에 문의하십시오. 애드온에 대한 자세한 내용은 애드온 관리하기 항목을 참조하십시오.
라이브러리 libname
의 인터페이스 파일 이름은 libnameInterface.
입니다. 여기서 ext
ext
는 플랫폼마다 다릅니다. Windows®에서는 .dll
, Linux®에서는 .so
또는 macOS에서는 .dylib
입니다.
런타임 경로 설정하기
MATLAB은 MATLAB 경로에서 인터페이스 파일을 찾고 시스템 경로 또는 런타임 검색 경로(rpath)에서 종속 라이브러리 파일을 찾습니다. 퍼블리셔가 종속 라이브러리 파일을 제공한다면 이러한 파일을 인터페이스 파일과 같은 폴더에 넣으면 됩니다. 또는, 이러한 파일을 시스템 경로에 추가하려면 Set Run-Time Library Path for C++ Interface 항목을 참조하십시오. 종속 라이브러리 찾기에 대한 자세한 내용은 Missing or Incorrectly Installed Run-Time Libraries 항목을 참조하십시오.
MATLAB 경로 설정하기
인터페이스 파일이 포함된 폴더에 대해 addpath
를 호출합니다.
도움말 표시하기
MATLAB help
및 doc
함수는 라이브러리의 구성원에 대한 도움말을 제공합니다. 예를 들어, 라이브러리 libname
에서 함수 funcname
에 대한 도움말을 표시하려면 다음을 입력하십시오.
help clib.libname.funcname
함수 호출하기
C++ 라이브러리 libname
의 함수 funcname
을 입력 인수 arg1,arg2,...
와 출력 인수 retVal
을 사용하여 호출하려면, MATLAB clib
네임스페이스를 사용하십시오. 다음을 입력하면 MATLAB이 라이브러리를 자동으로 불러옵니다.
retVal = clib.libname.funcname(arg1,arg2,...)
MATLAB이 라이브러리를 불러온 후에는 탭 완성을 사용하여 clib
네임스페이스의 구성원을 볼 수 있습니다.
MATLAB 데이터형과 C++ 데이터형 간 매핑
MATLAB 데이터를 C++ 메서드나 함수에 인수로 전달할 경우 MATLAB은 이 데이터를 C++ 언어에서 가장 잘 표현할 수 있는 유형으로 변환합니다.
다음 표의 각 행에는 MATLAB 데이터형과 함께, 그에 상응하는 C++ 인수가 왼쪽부터 오른쪽으로 근사한 정도 순으로 나와 있습니다. MATLAB 데이터형(셀형 배열 제외)은 스칼라(1×1) 배열 또는 행렬일 수 있습니다. C++ 데이터형은 스칼라 값 또는 배열일 수 있습니다. 구문 cpparray는 다음 C++ 배열 유형을 나타냅니다.
상자 배열(
[]
)배열 버퍼(
*
)std::vector
MATLAB 인수(스칼라 또는 배열) | C++ 파라미터 유형(스칼라 또는 배열) 가장 가까운 유형 <———————————————————————> 가장 거리가 먼 유형 | ||||||
---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
| ||
|
|
|
|
| |||
복소수 |
|
|
|
|
|
| |
복소수 |
|
| |||||
복소수 |
|
|
|
|
|
| |
복소수 |
|
|
|
|
| ||
복소수 |
|
|
|
| |||
복소수 |
|
| |||||
|
|
| |||||
| enum | ||||||
|
|
| |||||
C++ 데이터형 |
| ||||||
MATLAB 클래스의 MATLAB 객체 | 지원 안 됨 |
디폴트 인수를 사용하여 함수 호출하기
C++ 함수가 디폴트 인수로 정의된 경우 하나 이상의 후행 인수를 제공하지 않고 이 함수를 호출할 수 있습니다. 함수 도움말은 디폴트 값을 보여줍니다. 예를 들어, arg
의 유형이 double
형이고 디폴트 값이 100
이면 도움말에 다음이 표시됩니다.
clib.libname.funcname(arg) Input Arguments arg double = 100
다음 명령문은 동일한 결과를 생성합니다.
clib.libname.funcname clib.libname.funcname(100)
결과는 다를 수 있지만 다음 명령문도 올바릅니다.
clib.libname.funcname(99)
MATLAB은 정수 스칼라 및 부동소수점 유형에 대한 디폴트 인수를 지원합니다.
열거형 인수를 사용하여 함수 호출하기
입력 인수로 clib.
을 받는 C++ 라이브러리 libname
.enumlibname
의 C++ 함수 또는 메서드에 문자열을 전달할 수 있습니다.
예를 들어, 입력값으로 clib.libname.Days
를 받는 함수 getValue
를 포함하는 C++ 라이브러리 libname
에 대한 MATLAB 인터페이스가 있다고 가정하겠습니다.
help clib.libname.getValue
getValue - clib.libname.getValue Representation of C++ function getValue. RetVal = clib.libname.getValue(D) Input Arguments D clib.libname.Days Output Arguments RetVal int32
clib.libname.Days
의 값을 표시하려면 다음을 입력하십시오.
doc clib.libname.Days
Enumeration Summary Fri Mon Sat Sun Thu Tue Wed
clib.libname.Days.Sun
또는 문자열 "Sun"
을 사용하여 getValue
를 호출할 수 있습니다.
clib.libname.getValue(clib.libname.Days.Sun)
clib.libname.getValue("Sun")
ans = 106
액세스 위반 오류
라이브러리를 호출할 때 라이브러리가 디버그 모드가 아닌 릴리스 모드에서 컴파일되었는지 확인하십시오. 기타 일반적인 문제와 관련한 도움말은 Troubleshooting MATLAB Interface to C++ Library Issues 항목을 참조하십시오.