When using FTimeline::GetAllCurves, I get an error: "error LNK2019: unresolved external symbol"

When using FTimeline::GetAllCurves, I get an error: “error LNK2019: unresolved external symbol”.

I am creating a custom AnimInstance.

I have inluded in my header file: “#include “Runtime/Engine/Classes/Components/TimelineComponent.h””

I have tried calling it as:

TSet<class UCurveBase*> inOutCurves;
FacialTimelines[0].FTimeline::GetAllCurves(inOutCurves);

as well as:

TSet<class UCurveBase*> inOutCurves;
FacialTimelines[0].GetAllCurves(inOutCurves);

My timeline array is declared in my header file as:

UPROPERTY(BlueprintReadWrite, Category = "FalParserAnimInstance")
TArray<FTimeline> FacialTimelines;

Full Dump:

1>------ Build started: Project: MikuCode, Configuration: Debug_Editor x64 ------
1>  Deleting junk file: "..\..\Engine\Binaries\Win64\HTML5\UE4Editor-HTML5TargetPlatform-Win64-Debug.dll".
1>  Deleting junk file: "..\..\Engine\Binaries\Win64\HTML5\UE4Editor-HTML5TargetPlatform-Win64-Debug.pdb".
1>  Building UnrealHeaderTool...
1>  Target is up to date.
1>  Parsing headers for MikuCodeEditor
1>  Reflection code generation finished for MikuCodeEditor and took 3.949
1>  Performing 3 actions (max 4 parallel jobs)
1>  [2/3] link.exe UE4Editor-HTML5TargetPlatform-Win64-Debug.dll
1>  FalParserAnimInstance.cpp
1>     Creating library Y:\UESource\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Debug\UE4Editor-HTML5TargetPlatform-Win64-Debug.lib and object Y:\UESource\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Debug\UE4Editor-HTML5TargetPlatform-Win64-Debug.exp
1>  [3/3] link.exe UE4Editor-MikuCode-Win64-Debug.dll
1>     Creating library Y:\MMD\Unreal Engine\UnrealProjects\MikuCode\Intermediate\Build\Win64\MikuCodeEditor\Debug\UE4Editor-MikuCode-Win64-Debug.lib and object Y:\MMD\Unreal Engine\UnrealProjects\MikuCode\Intermediate\Build\Win64\MikuCodeEditor\Debug\UE4Editor-MikuCode-Win64-Debug.exp
1>FalParserAnimInstance.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl FTimeline::GetAllCurves(class TSet<class UCurveBase *,struct DefaultKeyFuncs<class UCurveBase *,0>,class FDefaultSetAllocator> &)const " (?GetAllCurves@FTimeline@@QEBAXAEAV?$TSet@PEAVUCurveBase@@U?$DefaultKeyFuncs@PEAVUCurveBase@@$0A@@@VFDefaultSetAllocator@@@@@Z) referenced in function "public: void __cdecl UFalParserAnimInstance::OnTimelineEventTick(void)" (?OnTimelineEventTick@UFalParserAnimInstance@@QEAAXXZ)
1>Y:\MMD\Unreal Engine\UnrealProjects\MikuCode\Binaries\Win64\UE4Editor-MikuCode-Win64-Debug.dll : fatal error LNK1120: 1 unresolved externals
1>  -------- End Detailed Actions Stats -----------------------------------------------------------
1>ERROR : UBT error : Failed to produce item: Y:\MMD\Unreal Engine\UnrealProjects\MikuCode\Binaries\Win64\UE4Editor-MikuCode-Win64-Debug.dll
1>  Cumulative action seconds (8 processors): 0.00 building projects, 1.18 compiling, 0.00 creating app bundles, 0.00 generating debug info, 0.60 linking, 0.00 other
1>  UBT execution time: 17.72 seconds
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command "Y:\UESource\UnrealEngine\Engine\Build\BatchFiles\Build.bat MikuCodeEditor Win64 Debug "Y:\MMD\Unreal Engine\UnrealProjects\MikuCode\MikuCode.uproject"" exited with code -1.
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

For clarification, I would like to know how to properly get the curves out of FacialTimelines, without getting the external error.

I do not understand why “unresolved external symbol” shows up, as I’m just calling FTimeline’s built in function.

Well,
this function isn’t exported from the engine DLL, and You have to add ENGINE_API keyword just like this:

ENGINE_API void GetAllCurves(TSet& InOutCurves) const;

Regards

Pierdek

Thank you! Adding the ENGINE_API keyword worked.