#pragma once #ifdef _WIN32 # define WIN32_LEAN_AND_MEAN # ifndef NOMINMAX # define NOMINMAX # endif # include # include #else # include # include #endif #include namespace fs = std::filesystem; #ifdef _WIN32 using dl_handle = std::remove_pointer_t; struct dl_handle_deleter { void operator()(HMODULE handle) { FreeLibrary(handle); } }; #else using dl_handle = void; struct dl_handle_deleter { void operator()(void * handle) { dlclose(handle); } }; #endif using dl_handle_ptr = std::unique_ptr; dl_handle * dl_load_library(const fs::path & path); void * dl_get_sym(dl_handle * handle, const char * name); const char * dl_error();