모듈 API 지정자

클래스와 함수를 다른 모듈에 노출시키는 방법입니다.

Windows
MacOS
Linux

이 지정자에 대해 가장 쉽게 생각해 볼 수 있는 방법은, 함수나 클래스나 데이터를 자기 모듈 DLL 파일에 "공용"(public)인 것으로 태그를 다는 데 사용하는 것입니다. Engine 모듈에 있는 함수를 ENGINE_API 로 마킹을 한다면, Engine 을 임포트하는 모듈은 그 함수에 직접 접근할 수 있게 됩니다.

이러한 방법은 엔진을 "모듈식"(modular) 모드(데스크톱 플랫폼에서의 DLL 파일)로 컴파일할 때만 사용됩니다. 이와 반대되는 방법은 소위 "모노리식"(monolithic) 모드로, 모든 코드를 하나의 실행파일 안에 몰아넣는 것을 말합니다. 빌드 유형은 UnrealBuildTool 세팅 및/또는 플랫폼과 빌드 환경설정에 따라 제어됩니다.

실제 API 매크로는 UBT 가 코드를 컴파일하는 방식에 따라 다음 중 하나에 해당합니다:

  • "모듈식" 모드로 모듈 코드를 컴파일할 때는 __declspec( dllexport ).

  • 임포트중인 모듈에 대한 공용 모듈 헤더를 포함할 때는 __declspec( dllimport ).

  • "모노리식" 모드로 컴파일할 때는 공란.

API 매크로는 다른 모듈에서 정적으로 임포트되는 모듈에 대해서만 의미가 있습니다. Core 모듈이 좋은 예제입니다. UE4 의 거의 모든 모듈은 *.Build.cs 파일에 "Core" 를 임포트 종속성으로 지정합니다.

다수의 모듈은 절대 정적으로 임포트될 일이 없습니다 (예로 "SceneOutliner" 모듈). 그러한 모듈을 가리켜 동적으로 로드되는 모듈이라 합니다. 동적으로 로드되는 모듈이 엄청난 것은 (일종의 플러그인처럼) 시동시 발견되고, 종종 즉시 리로드 가능하기 때문입니다.

API 매크로가 사용되는 곳은 대부분, 이전 코드에서 새로운 모듈이 그 DLL 에서 코드에 접근하고자 할 때입니다. 새로운 코드에서는 API 매크로가 훨씬 적게 사용되며, 그 대신 DLL 경계를 넘나들며 함수성을 노출시키는 이쁜 인터페이스 레이어를 셋업합니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼