24 class SharedObjectLoader {
26 void* shared_object =
nullptr;
32 using Ptr = std::shared_ptr<InferenceEngine::details::SharedObjectLoader>;
39 explicit SharedObjectLoader(
const char* pluginName) {
40 shared_object = dlopen(pluginName, RTLD_LAZY);
42 if (shared_object ==
nullptr)
46 #ifdef ENABLE_UNICODE_PATH_SUPPORT 52 explicit SharedObjectLoader(
const wchar_t* pluginName) : SharedObjectLoader(wStringtoMBCSstringChar(pluginName).c_str()) {
55 #endif // ENABLE_UNICODE_PATH_SUPPORT 57 ~SharedObjectLoader() noexcept(false) {
58 if (0 != dlclose(shared_object)) {
69 void* get_symbol(
const char* symbolName)
const {
70 void* procAddr =
nullptr;
72 procAddr = dlsym(shared_object, symbolName);
73 if (procAddr ==
nullptr)
74 THROW_IE_EXCEPTION <<
"dlSym cannot locate method '" << symbolName <<
"': " << dlerror();
#define THROW_IE_EXCEPTION
A macro used to throw the exception with a notable description.
Definition: ie_exception.hpp:25
Definition: cldnn_config.hpp:16
The macro defines a symbol import/export mechanism essential for Microsoft Windows(R) OS...
This is a header file with functions related to filesystem operations.
A header file for the main Inference Engine exception.