提升插件选择

Ben*_*rst 5 c++ unix plugins boost

我希望在我们当前的应用程序(Unix,C++)中实现一个插件架构,并且一直在审查Boost库中的选项(待批准).

编辑:我想在运行时动态添加类.

Boost.Plugin

Boost.Reflection

Boost.Extension

我想知道每个人对这些和其他实现的经验/意见是什么.

Kit*_*YMG 5

诶。我们刚刚使用了dlopen和必须在 dll 中定义dlsym的一对extern "C" static函数

extern "C" static plugin* create( arg_pack* );
extern "C" static errno_t destroy( plugin* );
Run Code Online (Sandbox Code Playgroud)

让插件管理器查找“.dll”或“.so”文件并将它们加载到
map<string, pair< plugin*(*)(arg_pack*), errno_t(*)(plugin*)> >

然后,您可以根据名称(上面的字符串)查找插件并获取它的“构造函数”或“析构函数”

另见:gmodule