CLIPS和与C ++的集成

时间:2012-07-26 10:46:22

标签: c++ rule-engine clips

我正在开发一个相当复杂的规则引擎。所以我决定接受任何GNU规则引擎的帮助,并将其与我的应用程序集成。我认为CLIPS是一个很好的规则引擎。

现在,我的应用程序是用C ++编写的,我想要一个示例方式(一种Hello世界的程序),我可以从中学习如何将.clp规则引擎集成到我的C ++应用程序中。

问题

  1. 我的应用程序是在Linux / AIX / HP和Mingw(用于Windows)上开发的。我们可以在CLIPS中开发规则引擎并将其集成到所有这些平台上的C ++应用程序中吗?您能否分享一下如何整合的链接。
  2. 进入规则引擎的根本原因是,我经历过在我的C / C ++应用程序中“构建”的规则占用了大量的内存/ CPU。我的印象是,通过使用规则引擎,我可以以更优化(更好的资源利用率)的方式实现相同的目标。 CLIPS可以帮我实现吗?

  3. 更新1:

    • 您正在开发什么样的应用程序?
      为了使它成为一条线,我正在开发一个基于过滤器匹配的计数器。用户可以递增(NetworkID = XYZ,递增计数= 7),(NetworkID = MNO,递增计数= 934)...等等。现在您获得NetworkID = X *的查询,然后我需要提供来自XAA的所有计数。 ..XZZ。它在多个进程中更新,跨越不同节点(分布式环境)的多个线程。

    • 为什么你内部有专家系统规则,以及什么样的规则? 现在,我的平台/应用程序使用C ++(用户执行递增/递减/查询)。现在我想使用规则引擎来帮助我。用C / C ++代码编写逻辑似乎会消耗更多所需的资源。

    PS:与增量/减量/查询相关的关键代码都在优化的c代码中。一些包装器使用C ++代码。所以我正在检查规则引擎是否可以从我的平台/应用程序(在C / C ++代码中)调用它。

1 个答案:

答案 0 :(得分:2)

将CLIPS与C ++集成的最简单方法是使用编译器选项(如果可用)将C代码编译为C ++代码。从高级编程指南的第1.2节“C ++兼容性”(http://clipsrules.sourceforge.net/documentation/v624/apg.htm):

  

现在可以使用ANSI C或者编译CLIPS源代码   C ++编译器。最低限度,非ANSI C编译器必须支持完整的ANSI   样式函数原型和void数据类型以便编译   剪辑。如果你想从C ++程序进行CLIPS API调用,那就是   通常通过编译CLIPS源更容易进行集成   文件作为C ++文件。这消除了制作外部“C”的需要   在C ++程序中声明CLIPS API。一些编程   环境允许您指定文件是否应该是   根据文件扩展名编译为C或C ++代码。其他   环境允许您显式指定要使用的编译器   无论扩展名如何(例如在gcc中选项“-x c ++”都会   将.c文件编译为C ++文件)。在某些环境中,相同   编译器用于编译C和C ++程序以及编译器   使用文件扩展名来确定文件是否应该是   编译为C或C ++程序。在这种情况下,改变.c   将CLIPS源文件扩展为.cpp通常允许源   编译为C ++程序。

您可以尝试使用clipmm(http://sourceforge.net/projects/clipsmm/)之类的东西,它是CLIPS库的C ++接口。