Unresolved external symbol when casting online subsystem interface to implemented IOnlineFriends

Hi! I have a problem with my online subsystem implementation.
First of all, yes, my online system module is in DependencyModuleNames.

PublicDependencyModuleNames.AddRange(
	new string[]
	{
		"Core",
		"OnlineSubsystem",
		"Json"
	}
);


PrivateDependencyModuleNames.AddRange(
	new string[]
	{
		"CoreUObject",
		"Engine",
		"Slate",
		"SlateCore",
		"OnlineSubsystemUtils",
		"GlobalEventDispatcher",
		"OnlineSubsystemMetacity"
	}
);

OnlineSubsystemMetacity is my online subsystem.

The problem is I created two additional methods in my friends class that it is not intended to be implemented with default IOnlineFriends interface. Methods are RemoveInvite and QueryUserSearch;

When I want to use this methods from different module, I can access them, but on build I get unresolved external symbol for my methods.

In online subsystem, the interface is stored as IOnlineFriendsPtr, which is a shared pointer:

typedef TSharedPtr<class IOnlineFriends, ESPMode::ThreadSafe> IOnlineFriendsPtr;

And in my interface implementation it defines as shared pointer as well:

typedef TSharedPtr<FOnlineFriendsMetacity, ESPMode::ThreadSafe> FOnlineFriendsMetacityPtr;

I access my interface by casting this pointer like this:

OnlineSub = Online::GetSubsystem(GetWorld());
FriendsInterface = static_cast<FOnlineFriendsMetacity*>(OnlineSub->GetFriendsInterface().Get());

Pointers static cast is the only way for me to get implemented class with new methods. But the error still appears. Any help would be enormously appreciated.

class ONLINESUBSYSTEMMETACITY_API FOnlineFriendsMetacity : public IOnlineFriends

Please check if you have added the ONLINESUBSYSTEMMETACITY_API macro.

Thank you, that works!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.