c中插件体系结构的类型

时间:2011-02-06 18:26:47

标签: c architecture plugins

可以使用2种技术(AFAIK)在C中设计插件:

  1. 一直使用dlopen():核心代码要求库中的所有函数都具有已知的名称和原型。它dlopen()s库并通过dlsym()
  2. 获取所有函数指针
  3. 保留一个公开的已知函数,该函数接受一个由插件填充实现函数的结构。这个函数是通过dlsym()得到的,并在开始时调用一次。
  4. 您认为哪种技术更好,为什么?如果有的话,请提及其他任何方式。

1 个答案:

答案 0 :(得分:1)

我更喜欢第二种方式,因为它会更容易:

  • 加载你的插件:它只需要一次调用dlsym,而不是几十次

  • 处理你的插件:你可以使用函数指针传递结构。而是在框架中传递数十个函数或构建这样的结构以传递它。

请记住,更容易意味着更不容易出错。