23 #ifndef WIN32_LEAN_AND_MEAN
24 #define WIN32_LEAN_AND_MEAN
29 #include <sys/times.h>
38 std::string file = name;
39 std::string errorMessage;
41 std::string filename = name +
".dll";
42 _handler = LoadLibrary(fullName.c_str());
45 DWORD err = GetLastError();
47 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL,
48 err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buffer, 0, NULL);
49 errorMessage = buffer;
54 #if defined(__MACOSX__) || defined(__APPLE__)
55 std::string filename =
"lib" + file +
".dylib";
57 std::string filename =
"lib" + file +
".so";
59 _handler = dlopen(filename.c_str(), RTLD_LAZY | RTLD_GLOBAL);
61 errorMessage = dlerror();
64 throw std::runtime_error(
"Error opening dynamic library: " + filename +
": " + errorMessage);
73 if (_handler != GetModuleHandle(0))
74 FreeLibrary(_handler);
76 if (_handler != RTLD_DEFAULT)
84 _handler = other._handler;
85 other._handler =
nullptr;
90 _handler = other._handler;
91 other._handler =
nullptr;
101 return GetProcAddress((HMODULE)_handler, name.c_str());
103 return dlsym(_handler, name.c_str());
void * getSymbolAddress(const std::string &name) const
DynamicLib & operator=(DynamicLib &&other)
DynamicLib(const std::string &name)