基于插件架构的c / c ++应用程序

时间:2010-05-25 09:30:54

标签: c++ linux architecture plugins add-in

我需要知道如何开始编写基于插件架构的应用程序。我的意思是如何编写基本代码,让其他人通过添加他们编写的插件来开发应用程序。 我知道在c ++中这样做有一些问题。大多数人使用另一种语言如python将插件添加到他们的c ++应用程序中。

3 个答案:

答案 0 :(得分:4)

我认为,这不是您期望的答案,但您可以尝试检查Rainmeter来源。它是用C ++编写的(有些地方可以做得更好,在我看来,但总的来说还可以)并且整个应用程序都是按照它处理插件的方式完成的。

即使是简单的API也是通过插件完成的,还有一些贡献插件的例子,我的意思是,由别人写的(我也是这样做的,有一天)。

我认为你可以通过查看其他应用程序来实际研究基于插件的开发中的许多新技巧。

另外,另一个好样本是Miranda IM

编辑:另外,如果我执行相同的任务,我实际上会在我的应用程序中添加一些python(或类似的东西)后端,并将其用作SDK的语言(例如,使用boost::python)。

答案 1 :(得分:4)

你应该:

  • 定义界面
  • 加载您的插件并为其提供此界面

您的插件可以通过此界面与主机应用程序进行通信。这意味着,你必须仔细考虑你想要你的插件做什么。

如果您的主机应用程序发生变化并且您添加了功能,则可能需要支持各种版本的界面。

答案 2 :(得分:1)

您可以在应用程序中定义外部应用程序可以与之通信的接入点吗?

假设您定义了一些命名管道机制或TCP / IP套接字,外部应用程序将调用此API来操作您的应用程序?

鉴于您需要在核心应用程序中注册这些插件,然后才允许它们使用您的应用程序。您甚至可以添加公共私有证书来验证此插件的来源,(即使用私钥对插件进行签名,其中应用程序的实例将根据公钥进行验证)