我正在编写一个嵌入了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/