我有一个用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'.
我想念什么?即使在使用clips.h
函数的情况下,我是否也需要在Linux上安装任何运行这些命令的库
答案 0 :(得分:1)
我将其发布给任何将来可能会遇到同样困难或可以提供任何帮助的人。
我正在使用带有以下标志的gcc
编译器来编译剪辑:
-O3 -g -pipe -pedantic -std=gnu99 -fno-strict-aliasing -DIO_FUNCTIONS=0 -c
深入研究高级编程指南和每个标志功能之后,我发现了一个名为BASIC_IO
的标志,用于打开/关闭输入/输出功能(打印输出,打开,..等),因此根据指南中,我更改了标志DIO_FUNCTIONS = 1
并重新编译了片段文件,从而解决了问题。
注意:标志名称的不同可能与剪辑的版本和编译器的版本有关。
感谢解决此问题的每个人。