我目前正在开发一个程序,该程序应该对自制数据结构执行计算。
我想以一种易于添加支持的计算的方式构建它(例如,作为符合预定结构的源文件)。
问题是我不想提前加载所有计算,因为它们可能有很多。 我发现支持动态加载功能的唯一机制是 dlopen,它需要 .so 文件,因此在这种情况下,使用 dlopen 意味着为每组计算编译一个单独的 so 文件。
虽然我没有发现此设计有任何内在问题,但我的蜘蛛感觉告诉我,我应该通过全知网络验证它并非完全愚蠢。如果有任何其他建议的方法,我将很高兴听到。
最佳答案
使用 dlopen()
是在 POSIX 兼容操作系统上的应用程序中动态加载可执行代码的最广泛使用的方法。它允许使用模块化架构,其中可选或很少使用的代码仅按需加载,这听起来很像您所需要的。
我肯定会使用这种方法 - 如果一段时间后您发现共享对象编译步骤成为障碍,您可以构建额外的动态加载模块来支持,例如一种解释型语言,例如 Lua 或 Python。这将允许您保留现有的代码库而不会失去可扩展性。
关于c++ - 用 C++ 编写可动态加载的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564636/