【问题标题】:Cross-Platform C++ Dynamic Library Plugin Loader跨平台 C++ 动态库插件加载器
【发布时间】:2010-10-19 22:04:30
【问题描述】:

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

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

编辑:我在 2007 年发现了这个 Dr Dobbs Post;从那以后肯定有人想出了更多的东西。

【问题讨论】:

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


【解决方案1】:

您可以查看Boost Extension,,尽管它尚未被 Boost 接受。

Boost.Extension 库已经 开发以缓解开发 插件和类似的扩展 使用共享库的软件。 类、函数和数据可以是 从共享库提供 并由应用程序加载。

【讨论】:

【解决方案2】:

Qt 有一个不错的plugin system。你应该看看那个页面的second part

【讨论】:

  • Qt 会知道他们在做什么,我应该想到他们,现在阅读。谢谢。
【解决方案3】:

如果您想要简单轻量级的东西,请尝试: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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2010-11-17
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多