我只是想知道我对使用共享库动态加载插件的跨平台实现的选择。到目前为止,我发现的唯一一个是:
我只是想知道我是否有其他选择?本质上,我希望能够将插件放在共享对象文件中,并在运行时加载它们,我希望以跨平台的C ++方式进行。
修改:我从2007年开始发现此Dr Dobbs Post;从那时起,肯定有人提出了更多的东西。
答案 0 :(得分:7)
虽然尚未被Boost接受,但您可以查看Boost Extension,。
Boost.Extension库已经存在 发展以缓解发展 插件和类似的扩展 使用共享库的软件。 类,函数和数据都可以 从共享库中提供 并由应用程序加载。
答案 1 :(得分:3)
Qt有一个很好的plugin system。您应该查看该页面的second part。
答案 2 :(得分:0)
如果你想要一些简单轻巧的东西,请尝试:https://pocoproject.org/docs/package-Foundation.SharedLibrary.html
使用SharedLibrary类需要三行来调用C共享库中的函数:
Poco::SharedLibrary lib("libfoo.so");
int (* foo)(int) = reinterpret_cast<int (*)(int)>(lib.getSymbol("foo"));
printf("answer %d\n", foo(5));