【发布时间】:2011-02-06 18:26:47
【问题描述】:
可以使用 2 种技术 (AFAIK) 在 C 中设计插件:
- 一直使用 dlopen():核心代码要求库中的所有函数都具有已知名称和原型。它 dlopen()s 库并通过 dlsym() 获取所有函数指针
- 保留一个公开的已知函数,该函数采用由插件实现的函数填充的结构。这个函数是通过 dlsym() 获得的,并在开始时调用一次。
您认为哪种技术更好,为什么?如果有的话,请提及任何其他方法。
【问题讨论】:
-
这取决于你是否关心便携性。使用
dlopen、dlsym等会限制您使用特定的操作系统子集。您可能需要考虑其他更与平台无关的选项。 -
@Paul R:我很好奇您建议还有哪些与平台无关的解决方案(除了 dlopen/LoadLibrary 的包装器)?
-
@B Mitch:插件架构只是一种约定——应用程序和构成插件的代码块之间的契约——这种架构在 Linux 存在之前就已经存在。
-
@Paul R:我并不反对该架构已经存在了很长时间,我只是好奇它在 C 中存在哪些可移植实现。谢谢。
标签: c architecture plugins