C ++插件dll系统

时间:2014-12-03 16:36:44

标签: c++ dll plugins interface abstract

我想在我的c ++应用程序中添加一个dll插件系统。

在阅读完所有关于该主题的内容之后,我将使用仅具有纯虚函数和基本数据类型的类接口。每个插件DLL都将从该接口派生类,并使用注册机制公开它们。它将包含一个销毁机制,以确保不会跨DLL边界调用此类的new和delete。

但是我应该在哪里导入和导出界面?我是否需要制作一种没有代码的虚拟DLL,只导出类声明?或者我可以不在任何地方导入/导出类,只是在app和插件中使用它作为标题,只传递指向应用程序和插件之间的类的指针?

由于

1 个答案:

答案 0 :(得分:1)

我为你提供以下方法:

  • 在公共头文件中声明您的插件接口(由...使用) 应用程序和插件)
  • 您的界面必须只有虚拟纯方法= 0,没有数据 成员。
  • 虚方法必须仅使用原始类型和结构 (喜欢C界面)。这与ABI兼容。所以这个插件可以 用不同的编译器开发
  • 插件接口必须提供两个方法:CreateObject()和 FreeObject()。 DLL的ABI代码知道如何创建它的对象和 删除它的对象。

我希望这可以帮到你。