43 std::lock_guard<std::mutex> lock(mutex_);
44 if (handle_)
throw LibraryAlreadyLoadedException(path);
46 int real_flag = RTLD_LAZY;
48 real_flag |= RTLD_LOCAL;
50 real_flag |= RTLD_GLOBAL;
52 handle_ = dlopen(path.c_str(), real_flag);
54 const char* err = dlerror();
55 throw LibraryLoadException(err ? std::string(err) : path);