bool PluginManager::loadPlugin(const std::string& _file) { #ifdef EMSCRIPTEN return false; #endif MYGUI_ASSERT(mIsInitialise, getClassTypeName() << " used but not initialised"); // Load plugin library DynLib* lib = DynLibManager::getInstance().load(_file); if (!lib) { MYGUI_LOG(Error, "Plugin '" << _file << "' not found"); return false; } // Call startup function DLL_START_PLUGIN pFunc = reinterpret_cast<DLL_START_PLUGIN>(lib->getSymbol("dllStartPlugin")); if (!pFunc) { MYGUI_LOG(Error, "Cannot find symbol 'dllStartPlugin' in library " << _file); return false; } // Store for later unload mLibs[_file] = lib; // This must call installPlugin pFunc(); return true; }
Plugin * PluginManager::load(std::string const & path) { if (!initialized) { std::cerr << "PluginManager: Manager not initialized" << std::endl; return NULL; } if (dynlibs.find(path) != dynlibs.end()) return NULL; DynLib * dynlib = DynLibManager::load(path); dynlibs[path] = dynlib; SNL_DLL_START_PLUGIN start_func = (SNL_DLL_START_PLUGIN)dynlib->getSymbol("dllStartPlugin"); return start_func(); // this must call install(), which adds the plugin to the installed list }
//----------------------------------------------------------------------- void Root::loadPlugin(const String& pluginName) { // Load plugin library DynLib* lib = DynLibManager::getSingleton().load( pluginName ); // Store for later unload mPluginLibs.push_back(lib); // Call startup function DLL_START_PLUGIN pFunc = (DLL_START_PLUGIN)lib->getSymbol("dllStartPlugin"); if (!pFunc) OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "Cannot find symbol dllStartPlugin in library " + pluginName, "Root::loadPlugin"); // This must call installPlugin pFunc(); }
//-------------------------------------------------------------------------------// void Root::loadPlugin(const String& pluginName) { DynLib* lib = TITAN_NEW DynLib(pluginName); lib->load(); if (std::find(mDynLibVector.begin(), mDynLibVector.end(), lib) == mDynLibVector.end()) { mDynLibVector.push_back(lib); // Call startup function DLL_START_PLUGIN pFunc = (DLL_START_PLUGIN)lib->getSymbol("dllStartPlugin"); if (!pFunc) TITAN_EXCEPT_FILELOST("Cannot find symbol dllStartPlugin in library " + pluginName); // This must call installPlugin pFunc(); } }