0

I'm trying to do logging with spdlog for my game engine that I'm currently learning how to build and I am getting these weird errors.

"unresolved external symbol "private: static class std::shared_ptr Hazel::Log::s_CoreLogger" (?s_CoreLogger@Log@Hazel@@0V?$shared_ptr@Vlogger@spdlog@@@std@@A)"

"unresolved external symbol "private: static class std::shared_ptr Hazel::Log::s_ClientLogger" (?s_ClientLogger@Log@Hazel@@0V?$shared_ptr@Vlogger@spdlog@@@std@@A)"

Here's my code (Log.h):

#pragma once

#include <memory>
#include "Core.h"
#include "spdlog/spdlog.h"

namespace Hazel {
    class HAZEL_API Log
    {
    public:
        static void Init();

        inline static std::shared_ptr<spdlog::logger>& GetCoreLogger() { return s_CoreLogger; }
        inline static std::shared_ptr<spdlog::logger>& GetClientLogger() { return s_ClientLogger; }
    private:
        static std::shared_ptr<spdlog::logger> s_CoreLogger;
        static std::shared_ptr<spdlog::logger> s_ClientLogger;
    };
}

I do not know if this is needed/relevant but here's my code in the cpp file (Log.cpp):

#include "Log.h"

namespace Hazel {

    std::shared_ptr<spdlog::logger> s_CoreLogger;
    std::shared_ptr<spdlog::logger> s_ClientLogger;

    void Log::Init()
    {
        spdlog::set_pattern("%^[%T] %n: %v%$");
    }

}
Cheese428
  • 11
  • 4

1 Answers1

2
#include "Log.h"

namespace Hazel {

    // declare these as part of Log!
    std::shared_ptr<spdlog::logger> Log::s_CoreLogger;
    std::shared_ptr<spdlog::logger> Log::s_ClientLogger;

    void Log::Init()
    {
        spdlog::set_pattern("%^[%T] %n: %v%$");
    }

}
robthebloke
  • 9,331
  • 9
  • 12