跨平台C ++动态库插件加载器

时间:2010-10-19 22:04:30

标签: c++ plugins cross-platform shared-libraries

我只是想知道我对使用共享库动态加载插件的跨平台实现的选择。到目前为止,我发现的唯一一个是:

我只是想知道我是否有其他选择?本质上,我希望能够将插件放在共享对象文件中,并在运行时加载它们,我希望以跨平台的C ++方式进行。

修改:我从2007年开始发现此Dr Dobbs Post;从那时起,肯定有人提出了更多的东西。

3 个答案:

答案 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));