1

我想基于使用 Prolog 谓词的 C 文件构建可执行文件。我想使用 GNU Prolog。

我成功(基于gnu prolog教程)构建了examp_c.c,examp.pl:

#include <string.h>
#include <gprolog.h>

PlBool
my_call(PlTerm goal)

{
  PlTerm *arg;
  int functor, arity;
  int result;

  arg = Pl_Rd_Callable_Check(goal, &functor, &arity);
  Pl_Query_Begin(PL_FALSE);
  result = Pl_Query_Call(functor, arity, arg);
  Pl_Query_End(PL_KEEP_FOR_PROLOG);
  return (result == PL_SUCCESS);
}

编译使用

gplc examp.pl examp_c.c

调用可执行示例时,启动/模拟 Prolog 解释器:

GNU Prolog 1.4.4 (64 bits)
Compiled Aug  3 2013, 20:06:22 with gcc
By Daniel Diaz
Copyright (C) 1999-2013 Daniel Diaz
| ?- 

但我想要的是有一个 C 程序在内部调用 Prolog,而不通过 Prolog 解释器与用户进行通信。Prolog 谓词应该作为 C 程序的/内部的参数提交,或者是内部生成的。

你知道这方面的例子吗?还是我误解了什么,这不可能吗?

你看,我刚开始是新手......我很乐意得到一些帮助:-) 非常感谢提前。

4

2 回答 2

0

您可以使用initialization/1Prolog 文件中的指令来定义在启动时要执行的查询。还有一个--no-top-level链接器选项用于抑制顶级解释器。检查两者的 GNU Prolog 文档。

于 2014-09-19T15:54:07.733 回答
0

您也可以直接在 C 中编写 main(),然后从 C 中引入 Prolog。 请参阅手册中的定义新的 C 主函数。

于 2014-09-21T16:36:16.803 回答