首页 > 解决方案 > '打印输出' CLIPS 缺少函数声明

问题描述

我有一个用 C++/MacOS 编写的可执行文件需要一个剪辑命令并使用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;
}

对于上面的代码,我面临两个错误:

我错过了什么?clips.h即使我正在使用函数,我是否需要在 Linux 上安装任何库才能运行此类命令?

标签: c++clinuxclips

解决方案


我为将来可能遇到同样困难或可以提供任何帮助的任何人发布此信息。

gcc我正在使用带有以下标志的编译器编译剪辑:

-O3 -g -pipe -pedantic -std=gnu99 -fno-strict-aliasing -DIO_FUNCTIONS=0 -c

在深入阅读了高级编程指南和每个标志功能后,我发现了一个名为BASIC_IO用于打开/关闭输入/输出功能(打印输出、打开、.. 等)的标志,因此根据指南我更改了标志DIO_FUNCTIONS = 1并重新编译剪辑文件,这样问题就解决了。

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

感谢每一位帮助解决这个问题的人。


推荐阅读