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();
    }
}
Beispiel #2
0
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;
}