Main Content

헤더 전용 HPP 파일

이 예제에서는 school이라는 이름으로 C++ 라이브러리에 대한 MATLAB® 인터페이스를 만듭니다. 라이브러리는 헤더 파일에 정의되어 있으며, 컴파일된 라이브러리 파일은 없습니다. 헤더 파일에서 완전히 정의된 라이브러리를 헤더 전용 라이브러리라고 합니다.

라이브러리 아티팩트MATLAB 인터페이스 libnameMATLAB 도움말

헤더 파일 school.hpp

clib.school(디폴트 이름)

>> doc clib.school

이 라이브러리는 학생 및 교사를 나타내는 클래스를 정의합니다. 이 라이브러리를 퍼블리시하면 MATLAB 사용자가 clib.school 네임스페이스에서 함수를 호출하여 StudentTeacher 객체를 만들고 이름과 나이를 지정할 수 있습니다.

MATLAB은 이 예제에서 사용하는 헤더 파일을 다음 폴더에서 제공합니다.

fullfile(matlabroot,"extern","examples","cpp_interface");

이 라이브러리에 대해 school이라는 인터페이스를 만들려면 워크플로 스크립트에서 라이브러리 정의 파일을 생성하고, 누락된 구문을 정의하고, 인터페이스를 빌드하고, 인터페이스를 테스트하는 단계를 수행합니다. 퍼블리시 과정을 반복해야 하는 경우, 파라미터를 복원하고 별도 프로세스(out-of-process) 실행 모드를 활성화하기 위해 추가적인 단계를 수행할 수 있습니다. 그런 다음 퍼블리시된 인터페이스를 다른 사용자와 공유할 수 있습니다.

워크플로 스크립트 만들기

쓰기 가능한 폴더로 이동하고 clibPublishInterfaceWorkflow를 호출합니다. 대화 상자에서 워크플로 스크립트의 이름을 지정합니다(예: publishmatrixlib.mlx). 워크플로 스크립트에는 인터페이스 퍼블리시를 안내하는 단계가 들어 있습니다. 이 스크립트를 사용하여 인터페이스 퍼블리시를 위한 파라미터를 저장합니다. 모든 플랫폼에서 동일한 스크립트를 사용할 수 있습니다.

참고

워크플로 스크립트를 사용하면 여러 MATLAB 세션에서 인터페이스를 반복적으로 생성, 정의, 빌드, 테스트할 수 있습니다. 그러나 스크립트는 기존 정의 파일 덮어쓰기 옵션을 사용하여 다시 만든 라이브러리 정의 파일에 대한 편집 내용은 저장하지 않습니다.

Step 1: GENERATE

먼저, 라이브러리 정의 파일을 생성합니다. 워크플로 스크립트에는 이 단계에 대한 C++ 인터페이스 생성 라이브 편집기 작업이 포함되어 있습니다. 이 작업을 사용하여 라이브러리를 구성하는 파일을 선택하고 라이브러리 정의 파일을 생성하기 위한 옵션을 설정합니다.

파일 선택

라이브러리는 school.hpp 헤더 파일에 의해 정의됩니다. 라이브러리 유형을 헤더 전용(Header-only)으로 설정합니다.

라이브러리 시작 경로를 설정하려면 폴더 fullfile(matlabroot,"extern","examples","cpp_interface")를 찾아 폴더 선택을 클릭합니다.

헤더 파일을 선택하려면 찾아보기를 클릭하여 파일 school.hpp를 엽니다.

헤더 파일은 다른 헤더 파일에 종속되지 않으므로 라이브러리에 include 경로가 필요하지 않음 체크박스를 선택합니다.

구성 선택

이 예제에서 C++ 컴파일러MinGW64 Compiler (C++)로 설정되어 있습니다.

기본적으로 인터페이스 라이브러리 이름school입니다. 이 이름은 MATLAB에서 기능을 호출하기 위해 clib와 함께 사용됩니다.

출력 폴더가 쓰기 가능한 폴더인지 확인합니다.

인터페이스를 개발하는 동안 정의 파일을 다시 만들 수 있도록 기존 정의 파일 덮어쓰기 체크박스를 선택합니다.

(선택 사항) C++ 라이브러리 설정 지정

이 라이브러리에 대한 인터페이스를 빌드하는 데 선택적 C++ 라이브러리 설정은 필요하지 않습니다.

(선택 사항) 정의 구성 지정

이 라이브러리에 대한 인터페이스를 빌드하는 데 선택적 정의 구성은 필요하지 않습니다.

결과 표시

기본적으로 정의 파일을 생성할 때 함수는 사용 가능한 구문(라이브러리의 클래스 및 함수)을 표시합니다. 인터페이스를 개발하는 동안 사용 불가능한 구문 표시 체크박스도 선택하십시오. 이를 통해, 지원되지 않기 때문에 포함되지 않은 구문이 뭔지 알 수 있습니다.

정의 파일 생성

Generate definition file을 클릭합니다. 스크립트가 진행률을 표시하고 지정된 출력 폴더에 라이브러리 정의 파일 defineschool.m을 생성합니다.

Step 2: DEFINE

라이브러리 정의 파일을 생성했을 때 MATLAB에서 1개 구문이 부분적으로 정의되었다고 보고했습니다. 기능을 완전히 정의하려면 defineschool.m 파일을 편집합니다. 파일을 편집하려면 DEFINE 섹션을 실행하십시오.

누락된 정보가 있는 구문이 주석 처리됩니다. 파일을 스크롤하여 "C++ function getName with MATLAB name clib.school.getName"이라는 제목의 섹션을 찾습니다. getName 코드 섹션에서 명령문의 주석을 해제합니다.

입력 인수 p는 스칼라 값입니다. 이 명령문에서 다음과 같이 <SHAPE>을 숫자 1로 바꿉니다.

defineArgument(getNameDefinition, "p", "clib.school.Person", "input", <SHAPE>);
defineArgument(getNameDefinition, "p", "clib.school.Person", "input", 1);

정의 파일을 저장하고 닫습니다.

파일에서 편집한 내용을 확인하려면 Confirm edits and run summary 섹션을 실행합니다. 파일에서 보고된 오류를 모두 해결합니다.

summary 함수가 다음을 표시합니다.

MATLAB Interface to school Library

Class clib.school.Person

  Constructors:
    clib.school.Person()
    clib.school.Person(string,uint64)
    clib.school.Person(clib.school.Person)

  Methods:
    setName(string)
    setAge(uint64)
    string getName()
    uint64 getAge()

  No Properties defined

Class clib.school.Teacher

  Constructors:
    clib.school.Teacher()
    clib.school.Teacher(string,uint64)
    clib.school.Teacher(clib.school.Teacher)

  Methods:
    string getName()

  No Properties defined

Class clib.school.Student

  Constructors:
    clib.school.Student()
    clib.school.Student(string,uint64)
    clib.school.Student(clib.school.Student)

  Methods:
    string getName()

  No Properties defined

Functions
  string clib.school.getName(clib.school.Person)

Step 3: BUILD

라이브러리에 대한 school 인터페이스를 빌드하려면 스크립트의 BUILD 섹션을 실행합니다.

Building interface file 'schoolInterface.dll' for clib interface 'school'.
Interface file 'schoolInterface.dll' built in folder 'C:\Users\Documents\MATLAB\school'.

To use the library, add the interface file folder to the MATLAB path.
addpath('C:\Users\Documents\MATLAB\school')

참고

생성, 정의, 빌드 단계를 반복할 수 있습니다. 그러나 라이브러리의 함수에 대한 도움말을 표시하거나 라이브러리의 함수를 호출한 후에는 동일한 MATLAB 세션에서 defineschool 정의 파일을 업데이트할 수 없습니다. MATLAB을 다시 시작하거나, 구성 선택 섹션의 인터페이스 라이브러리 이름 파라미터를 변경하여 새 정의 파일을 만드십시오.

Step 4: TEST

Set up and copy run-time libraries

Set up and copy run-time libraries 섹션을 실행합니다. 이 라이브러리에는 추가 런타임 종속 관계가 없으므로 명령을 수정하지 않아도 됩니다.

Call help on interface library

인터페이스 라이브러리에 대한 도움말을 표시하려면 Call help on interface library 섹션을 실행합니다.

Write code to call and test interface library

Write code to call and test interface library의 코드 섹션을 사용하여 다음 테스트를 작성합니다.

t1 = clib.school.Teacher('Ms. Jones',24);
getName(t1)
ans = "Ms. Jones"

인터페이스 공유하기

다른 MATLAB 사용자와 인터페이스를 공유하려면 툴박스 설치(.mltbx) 파일을 만듭니다. Distribute MATLAB Interface to C++ Library의 지침에 따라 다음을 수행하십시오.

  • 툴박스 폴더를 인터페이스 파일 schoolInterface.dll이 포함된 school 폴더로 설정합니다.

  • 네임스페이스(호출 구문)를 clib.school로 식별합니다.

관련 항목