본문 바로가기
Unreal/Solution

Unreal IGameplayTaskOwnerInterface Link Error

by Dev_카페인 2023. 12. 20.
반응형

[Unreal/C++] IGameplayTaskOwnerInterface Link Error

 

언리얼 엔진 5에서 AI Controller와 UBTService 등에서 IGameplayTaskOwnerInterface인터페이스를 상속 받아 사용할 때 나타나는 문제점이다.

 

이는 모듈 추가가 되지 않아서 파일을 찾지 못하는 문제가 있다.

CompilerResultsLog: Error: BTS_Corpse.cpp.obj : error LNK2001:
"public: virtual void __cdecl IGameplayTaskOwnerInterface::OnGameplayTaskActivated(class UGameplayTask)"
OnGameplayTaskActivated@IGameplayTaskOwnerInterface@@UEAAXAEAVUGameplayTask

CompilerResultsLog: Error: Module.MainProject.gen.cpp.obj : error LNK2001:
"public: virtual void __cdecl IGameplayTaskOwnerInterface::OnGameplayTaskActivated(class UGameplayTask)" (OnGameplayTaskActivated@IGameplayTaskOwnerInterface@@UEAAXAEAVUGameplayTask)

CompilerResultsLog: Error: BTS_Corpse.cpp.obj : error LNK2001:
"public:virtual void __cdecl IGameplayTaskOwnerInterface::OnGameplayTaskDeactivated(class UGameplayTask)" (OnGameplayTaskDeactivated@IGameplayTaskOwnerInterface@@UEAAXAEAVUGameplayTask)

CompilerResultsLog: Error: Module.MainProject.gen.cpp.obj : error LNK2001:
"public:virtual void __cdecl IGameplayTaskOwnerInterface::OnGameplayTaskDeactivated(class UGameplayTask)"
(OnGameplayTaskDeactivated@IGameplayTaskOwnerInterface@@UEAAXAEAVUGameplayTask)

CompilerResultsLog: Error:
F:\Projects\MainProject\Binaries\Win64\UnrealEditor-MainProject-1577.dll : fatal error LNK1120:

 

상속 구조는 다음과 같다.

UBTService -> UBTAuxiliaryNode -> UBTNode -> public UObject, public IGameplayTaskOwnerInterface

IGameplayTaskOwnerInterface의 클래스는 GAMEPLAYTASKS_API에 있는 것을 확인할 수 있다.

 

해결 방법은 간단하다.

컴파일 시 파일을 찾을 수 있도록 모듈을 추가해주는 것이다.

Visual Studio를 사용하고 있다면 {ProjectName}.Build.cs 파일을 열어 위처럼 모듈을 추가해 준다.

 

PublicDependencyModuleNames.AddRange(new string[] {
        "AIModule",			// AIController
        "GameplayTasks"		// IGameplayTaskOwnerInterface
    });
반응형