我正在编写一个嵌入了SWI-Prolog的C ++程序。每次执行时,SWI-Prolog都会在终端上打印欢迎信息。我试着压制它像
#include<SWI-cpp.h>
PlEngine *ple;
void startSWIProlog(char *argv0)
{
char *av[10];
int ac = 0;
av[ac++] = argv0;
av[ac++] = "--quiet";
av[ac++] = "-g";
av[ac++] = "true";
av[ac] = NULL;
if (!ple) ple = new PlEngine(ac, av);
}
但它不起作用。似乎PlEngine忽略了传递的选项。那么任何想法?感谢。
答案 0 :(得分:2)
似乎它忽略了argv。我尝试了所有我无法解决的问题(-g true, - quiet,-q,NULL在这里和那里,没有任何作用)。解决方案在另一个地方。
现在,您应该简单地初始化为:
if (!PL_initialise(argc, argv))
PL_halt(EXIT_FAILURE); /* if you wish to exit in case of fail */
但是当编译(*)时给出命令:
swipl-ld prog.c prog.pl -o prog.x -pl-options,-q
你应该让它沉默。
(*)注意:这实际上是对C语言的测试。我没有尝试过C ++。但我认为这值得回答。