Sign In Register

How can we help you today?

Start a new topic

error LNK2019: unresolved external symbol UGSSteamConnectRequest::SendSteamConnectRequest

I am currently using UE4, and while I understand that some of the API calls, such as "SendSteamConnectRequest" are BlueprintCallable methods and are blueprint methods, I'd like to call them from C++. This is my C++ code for doing so:


#include "../Plugins/GameSparks/Source/GameSparks/Private/GSApi.h"


UGSSteamConnectRequest* SteamConnect = UGSSteamConnectRequest::SendSteamConnectRequest();

 

 if (SteamConnect)

 {

       SteamConnect->Activate();

 }


I've added "GameSparks" to "PublicDependencyModuleNames", and when I compile the code, it says:


error LNK2019: unresolved external symbol "public: static class UGSSteamConnectRequest * __cdecl UGSSteamConnectRequest::SendSteamConnectRequest(bool,bool,class UGameSparksScriptData *,class FString,bool,bool,class UGameSparksScriptData *,bool,int)" (?SendSteamConnectRequest@UGSSteamConnectRequest@@SAPEAV1@_N0PEAVUGameSparksScriptData@@VFString@@0010H@Z) referenced in function "public: virtual void __cdecl AElekPlayerController::BeginPlay(void)" (?BeginPlay@AElekPlayerController@@UEAAXXZ)


Do I need to do something else to ensure that the UE4 linkage for GameSparks works properly?


1 person has this question

 Hey Martin,


Here's how to call requests with an example of SteamConnectRequest:


 

GameSparks::Api::Requests::SteamConnectRequest SteamAuth(gs);

//Set sessionTicket
    SteamAuth.SetSessionTicket(sessionTicket);

//Send
    SteamAuth.Send(SteamConnectRequest_Response);

 

 

gs being:

 

GameSparks::Core::GS& gs = UGameSparksModule::GetModulePtr()->GetGSInstance();

 

Hope this helps,

Omar

Hello,


I went through the same problems as you. 


Omar's answer definitely works, but I find it less clear to have to maintain sets of static functions. I find the request classes to be easier to use because of their callbacks. It feels more OO :)


To solve your problem, you have to add GAMESPARKS_API for each request you want to use from GSApi.h.


For example:


 

UCLASS()
class GAMESPARKS_API UGSRegistrationRequest : public UOnlineBlueprintCallProxyBase
{
	GENERATED_BODY()

public:
};

 Hope this helps :)

 Hi Michael,


Yes we've seen your work around and will be adopting it in the future. We are currently facing some internal bottle necks which will slow down an official release for that but it is on the way.


Thank you very much for your feedback and continued support for our plugin. We appreciate it.


Cheers,

Omar

Login to post a comment