void Application::RegisterAllPlugins() { std::ifstream plugins_file(cpw::ApplicationConfiguration::GetInstance()->GetPluginsFile().c_str()); if (plugins_file.is_open()) { while (!plugins_file.eof()) { std::string plugin; plugins_file >> plugin; DynamicLibrary *library = new DynamicLibrary(); if (plugin=="") continue; library->Load(plugin); if (library->GetH() != NULL) { std::string str1; library->RegisterPluginMenu(str1); int id = main_frame->AddPluginMenu(str1); plugin_map[id] = library; } else if (library) { delete library; library = NULL; } } plugins_file.close(); } }
Plugin* Plugin::LoadPlugin(const char* pluginFile) { DynamicLibrary* lib = new DynamicLibrary(); if( !lib->Load(pluginFile) ) { delete lib; return 0; } PluginAccessor accessor = (PluginAccessor)lib->FindFunction("GetPlugin"); if( !accessor ) { delete lib; return 0; } Plugin* plugin = accessor(Memory::sInstance, Assert::sInstance); if( !plugin ) { delete lib; return 0; } plugin->SetLibrary(lib); return plugin; }