UE5 UHT GENERATED_BODY() GENERATED_USTRUCT_BODY()
-
你在 .h 文件中写的 GENERATED_BODY() 宏本身并不是 GetPrivateStaticClass() 函数的声明。
-
实际上,GENERATED_BODY() 是一个预处理器宏,它会被 Unreal Header Tool (UHT) 处理。
-
UHT 会读取你的 .h 文件,识别 UCLASS() 和 GENERATED_BODY() 等宏,然后 生成额外的 C++ 代码,包括一个与你的类名相关的 *.generated.h 文件。
-
在这个生成的 .generated.h 文件中,你就能找到 GetPrivateStaticClass() 函数的声明。
-
GENERATED_BODY() 宏的主要作用是 声明 一些必要的成员变量和函数,这些是 Unreal Engine 反射系统所需要的。
-
GetPrivateStaticClass() 函数的 实现 并不是直接在 GENERATED_BODY() 宏展开的代码中。
-
GetPrivateStaticClass() 函数的实现是由 UHT 在编译过程中生成的,并包含在编译后的目标文件(如 .obj 或 .cpp.obj)中。
https://www.reddit.com/r/unrealengine/comments/1brvcpm/compiling_issues_unresolved_external_symbol_in/
-
错误的宏
GENERATED_UCLASS_BODY()
:-
GENERATED_UCLASS_BODY()
是 Unreal Engine 4 中用于生成类体的宏,但在 Unreal Engine 5 中,它已经被弃用,取而代之的是GENERATED_BODY()
。 -
如果你在 Unreal Engine 5 中使用
GENERATED_UCLASS_BODY()
,可能会导致链接错误,因为引擎无法正确生成类的实现。
-
-
缺少
public:
关键字:-
在 C++ 中,类成员的默认访问权限是
private
。如果你在头文件中声明了方法但没有明确指定public:
,这些方法会被视为私有成员,无法在其他地方访问,从而导致链接错误。
-