UE4_fatal error LNK2019 and fatal error LNK1120
出错原因,创建基于某个C++的子类时,报错如下。
1>------ 已启动生成: 项目: UE4, 配置: BuiltWithUnrealBuildTool Win32 ------
2>------ 已启动生成: 项目: C_SX, 配置: Development_Editor x64 ------
2>Creating makefile for hot reloading C_SXEditor (modules to compile have changed)
2>Compiling game modules for hot reload
2>Performing 1 actions (9 in parallel)
2>[1/1] Link UE4Editor-C_SX-6363.dll
2> 正在创建库 D:\Ue4_study\C_SX\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-C_SX-6363.suppressed.lib 和对象 D:\Ue4_study\C_SX\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-C_SX-6363.suppressed.exp
2>SPcikActor.cpp.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl ASUsableActor::ASUsableActor(void)" ([email protected]@[email protected]),该符号在函数 "public: __cdecl ASPcikActor::ASPcikActor(void)" ([email protected]@[email protected]) 中被引用
2>SPcikActor.gen.cpp.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl ASUsableActor::ASUsableActor(void)" ([email protected]@[email protected])
2>D:\Ue4_study\C_SX\Binaries\Win64\UE4Editor-C_SX-6363.dll : fatal error LNK1120: 1 个无法解析的外部命令
2>ERROR : UBT error : Failed to produce item: D:\Ue4_study\C_SX\Binaries\Win64\UE4Editor-C_SX-6363.dll
2>Total build time: 5.95 seconds (Local executor: 0.00 seconds)
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(44,5): error MSB3075: 命令“"C:\ProgramFiles\Epic\Epic Games\UE_4.18\Engine\Build\BatchFiles\Build.bat" C_SXEditor Win64 Development "D:\Ue4_study\C_SX\C_SX.uproject" -waitmutex”已退出,代码为 5。请验证您是否拥有运行此命令的足够权限。
2>已完成生成项目“C_SX.vcxproj”的操作 - 失败。
========== 生成: 成功 1 个,失败 1 个,最新 0 个,跳过 0 个 ==========
其中一个解决办法,如下2张图所示,使用了GENERATED_UCLASS_BODY()的宏,把声明中的无参构造注销掉就可以解决此bug。