gpt4 book ai didi

c++ - 插件系统如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:07 24 4
gpt4 key购买 nike

我正在做一个项目,我会发现一个有用的基本插件系统。本质上,我创建基类并可以将这个基类提供给插件开发人员。然后开发人员覆盖它并覆盖方法。然后这就是我变得有点不清楚的地方。它是如何工作的?在哪里可以找到与此类系统开发相关的文档?

谢谢

最佳答案

我所知道的插件系统都使用动态库。基本上,您需要在系统内核和插件之间定义一个小而有效的握手。由于没有 C++ ABI,插件必须要么只使用 C API,要么使用与系统内核完全相同的编译器(可能是编译器版本)。

最简单的可想到的协议(protocol)是一个函数,所有插件开发人员都必须提供该函数,它返回从您的基类派生的类的实例,作为基类指针返回。 (extern "C" 确保该函数不会有损坏的名称,因此更容易通过它的名称找到。)像这样:

extern "C" {
plugin_base* get_plugin();
}

然后内核会尝试加载在指定位置找到的二进制文件作为动态库,并尝试找到 get_plugin() 函数。如果成功,它会调用此函数并以加载的插件实例结束。

当然,如果还具有检查插件编译的 API 版本与内核版本的功能,那就太好了。 (毕竟,您可能会更改该基类。)并且您可能有其他函数,这些函数返回有关插件的信息(或者您将其作为基类中的虚拟函数)。这在很大程度上取决于您系统的性质。

关于c++ - 插件系统如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com