Unresolved External Symbol Errors

I got past the Iterator Debug Problem. Now I’m getting Unresolved External Symbol Errors.

I noticed in the Guide Step 2 of Setup for Visual Studip projects says add “NAKAMA_COCOS2D_SDK/libs/win64/v142” But there is no NAKAKA_COCOS2D_S2D folder in the package on GitHub. Could this be part of the problem?

There’s only “libs” and “shared libs.” I tried both of of those (adjusting for Debug and Release configurations) and still get linker errors.
Any assistance would be much appreciated! Thanks!

Can anyone assist with this? I’m stuck before I can even get my project started. Has anybody else had luck with the Nakama 2.4.1 C++ Github release?

I think I’m following the directions correctly. I can only have 1 screenshot per post, so I will make several posts showing my setup in each step relative to the directions in the GitHubRelease (Forum won’t let me link). The instructions there are a little different from what’s C++ Client Guide.

In Project Settings add following:

  1. Add NAKAMA_CPP_SDK/include in C/C++ > General > Additional Include Directories

  1. Add libs folder in Linker > General > Additional Library Directories :
  • NAKAMA_CPP_SDK/libs/win32/v140 - for VS 2015 x86
  • NAKAMA_CPP_SDK/libs/win64/v140 - for VS 2015 x64
  • NAKAMA_CPP_SDK/libs/win32/v141 - for VS 2017 x86
  • NAKAMA_CPP_SDK/libs/win64/v141 - for VS 2017 x64
  • NAKAMA_CPP_SDK/libs/win32/v142 - for VS 2019 x86
  • NAKAMA_CPP_SDK/libs/win64/v142 - for VS 2019 x64

I’m using VS2019 x64, so:

  1. Add the .lib files in your Debug libs folder to Linker > Input > Additional Dependencies for your Debug configuration. Do the same for your Release libs and configuration.

And for release:

If I copy paste the “Full C++ Example” from the Client Guide and then try to start the Session Manager I get a bunch of Unresolved External Symbol Errors. They appear to be problems on objects within the Nakama libraries that I added to the linker. Can anybody advise? I would love to move forward with Nakama. Thanks!

#include <iostream>
#include "nakama-cpp/Nakama.h"

using namespace Nakama;
using namespace std;

class NakamaSessionManager
{
public:
    NakamaSessionManager()
    {
        NClientParameters parameters;

        _client = createDefaultClient(parameters);
    }

    void start(const string& deviceId)
    {
        // to do: read session token from your storage
        string sessionToken;

        if (!sessionToken.empty())
        {
            // Lets check if we can restore a cached session.
            auto session = restoreSession(sessionToken);

            if (!session->isExpired())
            {
                // Session was valid and is restored now.
                _session = session;
                return;
            }
        }

        auto successCallback = [this](NSessionPtr session)
        {
            _session = session;

            // to do: save session token in your storage
            std::cout << "session token: " << session->getAuthToken() << std::endl;
        };

        auto errorCallback = [](const NError& error)
        {
        };

        _client->authenticateDevice(deviceId, opt::nullopt, opt::nullopt, {}, successCallback, errorCallback);
    }

protected:
    NClientPtr _client;
    NSessionPtr _session;
};
int main()
{
    NakamaSessionManager sessionManager;

    sessionManager.start("mytestdevice0001");


}

@lugehorsam Would you be able to suggest the settings needed to develop with the C++ client in Visual Studio?

Yesterday evening I was able to fix this and get it running. Once I added the proper lib folders for config and release, I needed to remove the full paths from the “additional dependencies” and just enter the filenames.

So it looks like this. With a similar one in Release configuration.
There were still additional measures I had to take before it would compile. I’ll document the complete steps for working with C++ Client in Visual Studio in another post.

Thanks @mehoo and apologies for not being able to help with this particular issue in time.