From 5788daa4106d721f662bd5afa6e406d29023acc2 Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Mon, 6 Apr 2020 18:24:42 +0200 Subject: [PATCH] Plugin manager: extent lifetime of DLLs --- fairmq/PluginManager.cxx | 2 ++ fairmq/PluginManager.h | 2 ++ 2 files changed, 4 insertions(+) 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;