在C / C ++中嵌入SWI-Prolog时如何抑制欢迎消息?

时间:2015-01-26 14:50:00

标签: c++ c swi-prolog

我正在编写一个嵌入了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忽略了传递的选项。那么任何想法?感谢。

1 个答案:

答案 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 ++。但我认为这值得回答。