클래스 이름. cpp(1): error : Expected 클래스 이름. h to be first header included.
원인) cpp에서 클래스명 .h를 최초로 포함(include) 하지 않음.
해결) 최초로 포함시키면 됨. (이 파일에 사용하는 클래스명은, 접두사 U,F,A,I등을 제외).
AMyActor 클래스에서 #include “AMyActor.h”가 아닌 #include “MyActor.h”
함수 이름 inconsistent dll linkage
원인) _API는 클래스, 함수, 변수를 정의한 모듈이 아니므로 복사했을 때 선언부와 다르면 클래스가 포함되지 않음.
해결)
class MYMODULE_API AMyActor : public AActor //
^^^^^^^^^^^^
모듈명이 Custom_module일땐 CUSTOM_MODULE_API이고 CustomModule일땐 CUSTOMMODULE_API임.
~ 함수가 정의되지 않음 error LNK2019: unresolved external symbol 함수 이름 또는 구현을 찾을 수 없는 오류
원인) Build.cs에 필요한 모듈이 Dependency에 추가되지 않았다거나 uproject의 AdditionalDependencies에 추가되지 않았거나 정의되지 않은 함수가 호출되었을 수도 있음. (다른 프로젝트에서 복사했을 때나 외부 dll부터 갖고오는 경우)
해결) 다른 프로젝트로부터 이식할 때에는 Build.cs 이외에도 .uproject의 설정도 주의.
PrivateDependencyModuleNames.AddRange(new string[]{ "UnrealEd", "LevelEditor", "CoreUObject", "Engine", Slate", SlateCore", “InputCore”});
예) 입력 받기 위해선 “InputCore”가 필요함 따라서 이를 추가.
error LNK2019: unresolved external symbol " declspec(dllimport) private: static class UClass * cdecl 클래스 이름::GetPrivateStaticClass(void)
원인) Private 클래스(Private 폴더 파일로 정의된 것)를 사용하려고 할 때, Public일땐 외부 모듈의 _ API 가 없는 클래스를 사용하려고 했을 때라든지, DependencyModule에 포함되지 않은 경우.
해결) Private 폴더에 있는 경우 Public 폴더로 이동하거나, Public인데도 에러가 떴다면 _API를 추가.
UnrealBuildTool : error : Expecting to find a type to be declared in a module rules named '모듈 A 이름' in 모듈 B 이름 ModuleRules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null. This type must derive from the 'ModuleRules 'type defined by Unreal Build Tool.
원인) Build.cs의 ModuleRule을 상속하는 클래스 이름이 ModuleA 이름과 동일하지 않을 때.
해결) UnrealBuildTool에서는 클래스명과 Module명을 같게 해야함.
class FMyModule : public ModuleRule
// 이 경우, MyModule 라고 하는 모듈명이 아니면 안됨
클래스명.gen.cpp(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
37>클래스명.gen.cpp(23): error C2146: syntax error: missing ';' before identifier 'UClass'
37> 클래스명.gen.cpp(110): error C2065: 'Z_Construct_UClass_클래스 이름_NoRegister': undeclared identifier
원인) 제대로 모듈이 추가 안됐을 경우. 예를 들어서 클래스 명이 ALevelSequenceActor이고 LEVELSEQUENCE_API UClass* Z_Construct_UClass_
ALevelSequenceActor_NoRegister();
해결) LEVELSEQUENCE_ API의 대상 모듈(LevelSequence)을 PublicDependency 또는 PrivateDependency에 추가.
PublicDependencyModuleNames.AddRange(new string[] { "LevelSequence" });
Please verify that you have sufficient rights to run this command.
원인) 비쥬얼 스튜디오가 프리 컴파일 헤더라던가 업데이트 전의 컴파일러로 컴파일 한 것이 남아 있어서 실패한 경우.
해결) .vs Binaries Intermediate Saved 폴더 및 솔루션 파일 지우고난 뒤 .uproject 파일 우클릭 후 솔루션 파일 재생성 하고 전체적으로 재빌드.
UnrealBuildTool : error : Unhandled exception: System.IO.DirectoryNotFound
Exception: 경로 '\Plugins\클래스명Plugin\Intermediate\Build\ Win64
\UE4Editor\Inc\클래스명'의 일부를 찾을 수 없습니다.
원인) 플러그인 안에 generated.h 되는 클래스가 1개도 존재하지 않음.
해결) UCLASS() 또는 USTRUCT() 매크로 사용시 선언부에 GENERATED_BODY() 매크로 필히 추가.
클래스명.generated.h(16): error C2007: #define syntax
원인) 숫자라던가 특수문자를 포함했을 경우 발생하는 오류 (폴더명/헤더파일명).
해결) 영문으로 바꿈.
'게임엔진 > Unreal' 카테고리의 다른 글
[Unreal] 언리얼 충돌체 관련 함수와 이벤트(델리게이트) 바인딩 방법 #2 (0) | 2022.06.02 |
---|---|
[Unreal] 차량 설정 방법 (Chaos Vehicle) (0) | 2022.05.30 |
[Unreal] 인스턴스와 서브시스템 (Instance/SubSystem) 갖고오는 방법 (0) | 2022.05.28 |
[Unreal] 충돌 관련 함수 (0) | 2022.05.27 |
[Unreal] 클래스 생성 시 소스 파일 기본 주석 제거 (0) | 2022.05.26 |