我想基于使用Prolog谓词的C-File构建可执行文件。我想使用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程序的参数提交或在内部生成。
你知道这方面的例子吗?或者我误解了什么,是不可能的?
你知道,我刚开始作为新手...我很乐意得到一些帮助:-)非常感谢提前。
答案 0 :(得分:0)
您可以在Prolog文件中使用initialization/1
指令来定义在启动时要执行的查询。还有一个--no-top-level
链接器选项用于抑制顶级解释器。查看两者的GNU Prolog文档。
答案 1 :(得分:0)
你也可以直接在C中写一个main()然后从C中写出Prolog。 See Defining a new C main function in the manual.