UE4 LNK2001从K2Node_AnimGetter派生时错误



我正试图从K2Node_AnimGetter中获得一些功能。然而,当我试图编译它时,我得到一些未解决的外部符号LNK2001错误。当从K2Node_CallFunction派生时,我没有问题编译(从AnimGetter派生自己)。
我试图包括一些依赖关系,如AnimGraph在MyGameEditor.Build.cs,但没有结果…

我错过什么了吗?

K2Node_MyAnimGetter.h

#pragma once
#include "CoreMinimal.h"
#include "K2Node_AnimGetter.h"
#include "K2Node_MyAnimGetter.generated.h"
UCLASS()
class MYGAMEEDITOR_API UK2Node_MyAnimGetter : public UK2Node_AnimGetter
{
GENERATED_BODY()
};

K2Node_MyAnimGetter.cpp

#include "K2Node_MyAnimGetter.h"
// nothing else since my class is empty

MyGameEditor.Build.cs

using UnrealBuildTool;
public class MyGameEditor : ModuleRules
{
public MyGameEditor(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "BlueprintGraph", "AnimGraph", "AnimGraphRunTime" });
PrivateDependencyModuleNames.AddRange(new string[] { "Engine", "UnrealEd", "BlueprintGraph", "AnimGraph", "AnimGraphRunTime", "KismetCompiler" });
}
}

错误日志:

1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::Serialize(class FArchive &)" (?Serialize@UK2Node_AnimGetter@@UEAAXAEAVFArchive@@@Z)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::Serialize(class FArchive &)" (?Serialize@UK2Node_AnimGetter@@UEAAXAEAVFArchive@@@Z)
1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::PostPasteNode(void)" (?PostPasteNode@UK2Node_AnimGetter@@UEAAXXZ)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::PostPasteNode(void)" (?PostPasteNode@UK2Node_AnimGetter@@UEAAXXZ)
1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::AllocateDefaultPins(void)" (?AllocateDefaultPins@UK2Node_AnimGetter@@UEAAXXZ)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::AllocateDefaultPins(void)" (?AllocateDefaultPins@UK2Node_AnimGetter@@UEAAXXZ)
1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual class FText __cdecl UK2Node_AnimGetter::GetNodeTitle(enum ENodeTitleType::Type)const " (?GetNodeTitle@UK2Node_AnimGetter@@UEBA?AVFText@@W4Type@ENodeTitleType@@@Z)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual class FText __cdecl UK2Node_AnimGetter::GetNodeTitle(enum ENodeTitleType::Type)const " (?GetNodeTitle@UK2Node_AnimGetter@@UEBA?AVFText@@W4Type@ENodeTitleType@@@Z)
1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual bool __cdecl UK2Node_AnimGetter::CanCreateUnderSpecifiedSchema(class UEdGraphSchema const *)const " (?CanCreateUnderSpecifiedSchema@UK2Node_AnimGetter@@UEBA_NPEBVUEdGraphSchema@@@Z)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual bool __cdecl UK2Node_AnimGetter::CanCreateUnderSpecifiedSchema(class UEdGraphSchema const *)const " (?CanCreateUnderSpecifiedSchema@UK2Node_AnimGetter@@UEBA_NPEBVUEdGraphSchema@@@Z)
1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual bool __cdecl UK2Node_AnimGetter::IsActionFilteredOut(class FBlueprintActionFilter const &)" (?IsActionFilteredOut@UK2Node_AnimGetter@@UEAA_NAEBVFBlueprintActionFilter@@@Z)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual bool __cdecl UK2Node_AnimGetter::IsActionFilteredOut(class FBlueprintActionFilter const &)" (?IsActionFilteredOut@UK2Node_AnimGetter@@UEAA_NAEBVFBlueprintActionFilter@@@Z)
1>K2Node_MyAnimGetter.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::GetMenuActions(class FBlueprintActionDatabaseRegistrar &)const " (?GetMenuActions@UK2Node_AnimGetter@@UEBAXAEAVFBlueprintActionDatabaseRegistrar@@@Z)
1>K2Node_MyAnimGetter.gen.cpp.obj : error LNK2001: symbole externe non resolu "public: virtual void __cdecl UK2Node_AnimGetter::GetMenuActions(class FBlueprintActionDatabaseRegistrar &)const " (?GetMenuActions@UK2Node_AnimGetter@@UEBAXAEAVFBlueprintActionDatabaseRegistrar@@@Z)
1>R:SVNMyGameBinariesWin64UE4Editor-MyGameEditor.dll : fatal error LNK1120: 7 externes non resolus

如果您查看UK2Node_AnimGetter类,您将注意到它是UCLASS(MinimalAPI)。这意味着类可以在它的Module外部访问,但是它的内部函数不能被导出。

您还会注意到所有带有链接器错误的函数都是虚覆盖的。通过覆盖这些函数,你可能可以手动导出它们,从而修复链接错误。

相关内容

最新更新