언리얼은 엔진 모듈을 에디터 모드일 때는 dll 형태로 관리한다. 게임 모듈도 dll 형태로 빌드되는데 Shipping 빌드 때는 monolithic 이라고 해서 static 하게 다시 빌드한다.


OnlineSubsystem 과 같은 모듈들을 추가할 때 플러그인 형태로 구현하는데 dll 형태라 class 사용 시 link 에러가 발생했다. 일반적으로는 __declspec(dllexport), __declspec(dllimport) 를 명시해주는데 엔진 코드에 이런 부분을 발견할 수가 없었다.


찾아보니 ONLINESUBSYSTEM_API 와 같이 (모듈이름)_API 라고 명시해 놓으면 UnrealBuildTool 이 알아서 dllexport, dllimport 를 붙여주는 것이었다.


언리얼은 여기저기 숨겨진 규칙들이 아직도 많은 것 같다.


출처 : https://docs.unrealengine.com/latest/INT/Programming/Modules/API/

728x90

+ Recent posts