Unresolved External Symbol FToolkitManager

Hi,
I’m currently using ue5.1 with visual studio 2022. I’m trying to create a Graph Editor tool plugin by recreating the Sound Cue Graph Editor. I’m currently stuck because I’m getting the following error whenever I try to reference the FToolkitManager.

Error LNK2019 unresolved external symbol “__declspec(dllimport) public: static class FToolkitManager & __cdecl FToolkitManager::Get(void)” (_imp ? Get@FToolkitManager@@SAAEAV1@XZ) referenced in function “private: static class TSharedPtr<class ISkillTreeEditor,1> __cdecl FSkillTreeEditorUtilities::GetISkillTreeEditorForObject(class UObject const *)” (? GetISkillTreeEditorForObject@FSkillTreeEditorUtilities@@anonymous_user_42f44b0f ? AV ? $TSharedPtr@VISkillTreeEditor@@$00@@PEBVUObject@@@Z)

The .h file only contains this:

class SKILLTREESYSTEM_API FSkillTreeEditorUtilities
{
public:

private:
	/** Get ISkillEditor for given object, if it exists */
	static TSharedPtr<class ISkillTreeEditor> GetISkillTreeEditorForObject(const UObject* ObjectToFocusOn);

	FSkillTreeEditorUtilities() {}
};

And the .cpp file contains:

TSharedPtr<class ISkillTreeEditor> FSkillTreeEditorUtilities::GetISkillTreeEditorForObject(const UObject* ObjectToFocusOn)
{
	check(ObjectToFocusOn);

	USkillTree* SkillTree = Cast<const USkillTreeGraph>(ObjectToFocusOn)->GetSkillTree();

	TSharedPtr<ISkillTreeEditor> SkillTreeEditor;
	if (SkillTree != NULL)
	{
		TSharedPtr<IToolkit> FoundAssetEditor = FToolkitManager::Get().FindEditorForAsset(SkillTree);
		if (FoundAssetEditor.IsValid())
		{
			SkillTreeEditor = StaticCastSharedPtr<ISkillTreeEditor>(FoundAssetEditor);
		}
	}

	return SkillTreeEditor;
}

I believe the bolded line above is what’s causing the issue. I have tried to add the module I think FToolkitManager comes from. The following is my build script within with my plugin source:

public class SkillTreeSystem : ModuleRules
{
   public SkillTreeSystem(ReadOnlyTargetRules Target) : base(Target)
   {
   	PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
   	
   	PublicIncludePaths.AddRange(
   		new string[] {
   			// ... add public include paths required here ...
   		}
   		);
   			
   	
   	PrivateIncludePaths.AddRange(
   		new string[] {
   			// ... add other private include paths required here ...
   		}
   		);
   		
   	
   	PublicDependencyModuleNames.AddRange(
   		new string[]
   		{
   			"Core",
   			
   			// ... add other public dependencies that you statically link with here ...
   		}
   		);
   		
   	
   	PrivateDependencyModuleNames.AddRange(
   		new string[]
   		{
   			"CoreUObject",
   			"Engine",
   			"Slate",
   			"SlateCore",
   			"UnrealEd"
   			// ... add private dependencies that you statically link with here ...	
   		}
   		);
   	
   	
   	DynamicallyLoadedModuleNames.AddRange(
   		new string[]
   		{
   			// ... add any modules that your module loads dynamically here ...
   		}
   		);
   }
}

Edit: For more context, the following is the ISkillTreeEditor interface that is referenced in the FSkillTreeEditorUtilities object.

class ISkillTreeEditor : public FAssetEditorToolkit
{
public:
	virtual USkillTree* GetSkillTree() const = 0;

	/** Assigns the currently selected nodes to the property control */
	virtual void SetSelection(TArray<UObject*> SelectedObjects) = 0;

	/** Checks whether nodes can currently be pasted */
	virtual bool CanPasteNodes() const = 0;

	/** Paste nodes at a specific location */
	virtual void PasteNodesHere(const FVector2D& Location) = 0;

	/** Get the bounding area for the currently selected nodes
	 *
	 * @param Rect Final output bounding area, including padding
	 * @param Padding An amount of padding to add to all sides of the bounds
	 *
	 * @return false if nothing is selected*/
	virtual bool GetBoundsForSelectedNodes(class FSlateRect& Rect, float Padding) = 0;

	/** Gets the number of nodes that are currently selected */
	virtual int32 GetNumberOfSelectedNodes() const = 0;

	/** Get the currently selected set of nodes */
	virtual TSet<UObject*> GetSelectedNodes() const = 0;
};

You have to add “EditorFramework” to the dependancy modules and regenerate project files