#pragma once namespace XCEngine { namespace Platform { class IDynamicLibrary { public: virtual ~IDynamicLibrary() = default; virtual bool Load(const char* path) = 0; virtual void Unload() = 0; virtual bool IsLoaded() const = 0; virtual void* GetSymbol(const char* symbolName) = 0; template T GetSymbol(const char* symbolName) { return reinterpret_cast(GetSymbol(symbolName)); } virtual const char* GetPath() const = 0; }; } // namespace Platform } // namespace XCEngine