c++ - '打印输出' 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;
}
对于上面的代码,我面临两个错误:
[EXPRNPSR3] Missing function declaration for 'printout'.
我错过了什么?clips.h
即使我正在使用函数,我是否需要在 Linux 上安装任何库才能运行此类命令?
解决方案
我为将来可能遇到同样困难或可以提供任何帮助的任何人发布此信息。
gcc
我正在使用带有以下标志的编译器编译剪辑:
-O3 -g -pipe -pedantic -std=gnu99 -fno-strict-aliasing -DIO_FUNCTIONS=0 -c
在深入阅读了高级编程指南和每个标志功能后,我发现了一个名为BASIC_IO
用于打开/关闭输入/输出功能(打印输出、打开、.. 等)的标志,因此根据指南我更改了标志DIO_FUNCTIONS = 1
并重新编译剪辑文件,这样问题就解决了。
注意:标志名称的差异可能与剪辑版本和编译器版本有关。
感谢每一位帮助解决这个问题的人。
推荐阅读
- css - 如何使用 CSS 通过显示他们的 favicon 来突出显示指向特定网站的链接?
- php - 在 docker 中运行 symfony 4.4 Web 服务器时出现“找不到页面”错误
- r - 改变 rnoaa 包的输出?
- react-native - 在 setInterval 期间,React Native 可触摸不透明度在平面列表中失败
- git - Google Compute Engine VM,添加的负载均衡器现在不能 git pull
- python - 无法打开 Jupyter Notebook - Distutils 错误
- python - 将函数应用于多个变量
- c# - 使用 Automapper 映射属性返回 NotFoundException
- sql - 如何微调这个 SQL Server 查询?
- jquery - 将部分视图模式中的选定文本附加到父视图中的文本框 - .NET Core MVC