c++ - 用 C++ 编写可动态加载的组件

标签 c++ linux plugins

我目前正在开发一个程序,该程序应该对自制数据结构执行计算。

我想以一种易于添加支持的计算的方式构建它(例如,作为符合预定结构的源文件)。

问题是我不想提前加载所有计算,因为它们可能有很多。 我发现支持动态加载功能的唯一机制是 dlopen,它需要 .so 文件,因此在这种情况下,使用 dlopen 意味着为每组计算编译一个单独的 so 文件。

虽然我没有发现此设计有任何内在问题,但我的蜘蛛感觉告诉我,我应该通过全知网络验证它并非完全愚蠢。如果有任何其他建议的方法,我将很高兴听到。

最佳答案

使用 dlopen() 是在 POSIX 兼容操作系统上的应用程序中动态加载可执行代码的最广泛使用的方法。它允许使用模块化架构,其中可选或很少使用的代码仅按需加载,这听起来很像您所需要的。

我肯定会使用这种方法 - 如果一段时间后您发现共享对象编译步骤成为障碍,您可以构建额外的动态加载模块来支持,例如一种解释型语言,例如 Lua 或 Python。这将允许您保留现有的代码库而不会失去可扩展性。

关于c++ - 用 C++ 编写可动态加载的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564636/

相关文章:

C++ 程序检查标签有效性

c++ - 智能指针的意外行为

c++ - RichEditControl 未调用 ON_EN_CHANGE 事件/处理程序

c - linux使用fork函数的问题

c++ - 如何使用 MFC 创建 VST 插件?

c++ - 尝试使用 OpenCV 卡尔曼滤波器和模板参数时出现编译错误,似乎无法识别 cv::Matt

c - 移动 stderr fd 指针开始

linux - 第二天使用 'at'命令录制视频流,只做一次

xcode - 如何获取 Xcode 8 的 clang 格式?

eclipse - 如何以编程方式从完整类名中查找 Eclipse 插件中的 .java 文件?