#pragma once namespace LibraryLoader { using handle = void; using function = void(); handle *OpenLibrary(const char *name); void CloseLibrary(handle *handle); handle* GetCurrentProcessHandle(); function *GetFunction(handle *handle, const char *name); template inline bool LoadSymbol(T& var, handle *handle, const char *name) { var = reinterpret_cast(GetFunction(handle, name)); return var != nullptr; } }