我有一个用C++ / MacOS编写的可执行文件,它带有clips命令并使用clips.h函数运行它。该可执行文件可以在Mac上完美运行,但是一旦我尝试运行相同的clips命令,我就会遇到错误。

我搜索了任何可以帮助的东西,但找不到真正有用的东西。

这些命令很简单,功能应该已经内置在clips中。

这是我正在加载的文件。

(defrule QPain
   =>
   (printout t "Are You In Pain? ")
   (bind ?answer (read))
   (if (eq ?answer y)
      then
      (bind ?*symcount* (+ ?*symcount* 1))))

这是我的c++代码,
#ifdef __cplusplus
extern "C" {
#endif
#include "clips.h"
#ifdef __cplusplus
}
#endif

#include <string>
#include <iostream>

using namespace std;

int main() {
    Environment* env = NULL;
    env = CreateEnvironment();
    SetConserveMemory(env, true);
    ReleaseMem(env, 0);
    Load(env, "/path/to/clp/file/above");
    Reset(env);
    Run(env, -1);
return 0;
}


对于上面的代码,我面临着两个错误:
  • [EXPRNPSR3] Missing function declaration for 'printout'.

  • 我想念什么?我是否需要在Linux上安装任何库来运行此类命令,即使我正在使用clips.h函数呢?

    最佳答案

    我将其发布给将来可能会遇到同样困难或可以提供任何帮助的任何人。

    我正在使用gcc编译器使用以下标志来编译剪辑:
    -O3 -g -pipe -pedantic -std=gnu99 -fno-strict-aliasing -DIO_FUNCTIONS=0 -c
    在深入了解高级编程指南和每种标志功能之后,我发现了一个称为BASIC_IO的标志,用于打开/关闭输入/输出功能(打印输出,打开,..等),因此根据指南,我更改了标记DIO_FUNCTIONS = 1并重新编译剪辑文件,从而解决了该问题。

    注意:标志名称的不同可能与剪辑的版本和编译器的版本有关。

    感谢所有为这个问题提供帮助的人。

    08-28 12:07