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

最佳答案

似乎确实忽略了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++。但我认为值得在这里回答。

关于c++ - 在C/C++中嵌入SWI-Prolog时如何抑制欢迎消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28152469/

10-13 05:02