diff --git a/fairmq/PluginManager.cxx b/fairmq/PluginManager.cxx index b1ffc0cf..39c817c1 100644 --- a/fairmq/PluginManager.cxx +++ b/fairmq/PluginManager.cxx @@ -28,6 +28,8 @@ using boost::optional; const std::string fair::mq::PluginManager::fgkLibPrefix = "FairMQPlugin_"; +std::vector fair::mq::PluginManager::fgDLLKeepAlive = std::vector(); + fair::mq::PluginManager::PluginManager() : fSearchPaths{} , fPluginFactories() diff --git a/fairmq/PluginManager.h b/fairmq/PluginManager.h index 085ac6b8..d6206f52 100644 --- a/fairmq/PluginManager.h +++ b/fairmq/PluginManager.h @@ -97,6 +97,7 @@ class PluginManager using fair::mq::tools::ToString; auto lib = shared_library{std::forward(args)...}; + fgDLLKeepAlive.push_back(lib); fPluginFactories[pluginName] = import_alias( shared_library{lib}, @@ -117,6 +118,7 @@ class PluginManager static const std::string fgkLibPrefix; std::vector fSearchPaths; + static std::vector fgDLLKeepAlive; std::map> fPluginFactories; std::unique_ptr fPluginServices; std::map> fPlugins;