rem: void *plugin_handle = dlopen(file.c_str(), RTLD_NOW);
add: audio_io_interface_version plugin_version = 0;  void *plugin_handle = dlopen(file.c_str(), RTLD_NOW | RTLD_GLOBAL);
context: static AUDIO_IO* register_internal_plugin(const std::string& libdir,					       const std::string& filename) {  std::string file = libdir + std::string("/") + filename;  audio_io_descriptor desc_func = 0;  void *plugin_handle = dlopen(file.c_str(), RTLD_NOW);  if (plugin_handle != 0) {    audio_io_interface_version plugin_version;    plugin_version = (audio_io_interface_version)dlsym(plugin_handle, "audio_io_interface_version");    if (plugin_version != 0) {      int version = plugin_version();      if (version < ecasound_library_version_current -	  ecasound_library_version_age ||	  version > ecasound_library_version_current) {	ecadebug->msg(ECA_DEBUG::info, 		      "(eca-static-object-maps) Opening internal plugin file \"" + 		      file + 		      "\" failed. Plugin version " + 		      kvu_numtostr(version) +		      " doesn't match libecasound version " +		      kvu_numtostr(ecasound_library_version_current) + "." +		      kvu_numtostr(ecasound_library_version_revision) + "." +		      kvu_numtostr(ecasound_library_version_age) + ".");	return(0);      }      else {	desc_func = (audio_io_descriptor)dlsym(plugin_handle, "audio_io_descriptor");	if (desc_func != 0) {	  return(desc_func());	}      }    }  }  if (plugin_handle == 0 ||      desc_func == 0) {    ecadebug->msg(ECA_DEBUG::user_objects, 		  "(eca-static-object-maps) Opening internal plugin file \"" + 		  file + 		  "\" failed, because: \"" + 		  dlerror() +		  "\"");  }      return(0);}