1

我正在尝试从 C++ 应用程序调用 SWI-Prolog。

我目前正在尝试运行官方文档中提供的一些代码:

#include <SWI-Prolog.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    term_t a0 = PL_new_term_refs(2);
    static predicate_t p;

    if ( !p )
    p = PL_predicate("listing", 1, "database");

    PL_put_atom_chars(a0, "member");
    cout << PL_open_query(NULL, PL_Q_NORMAL, p, a0);
    cout << a0;

    return 0;
}

它编译得很好,但是当我尝试运行它时,我收到了这个错误:

[FATAL ERROR: PL_new_term_refs(): No foreign environment]

我可以知道是什么问题吗?我在 Google 上找不到与该主题相关的任何内容。

非常感谢。

这是我遵循的文档:http://www.swi-prolog.org/pldoc/doc_for?object=section%283,%279.4.9%27,swi%28%27/doc/Manual/foreigninclude。 html%27%29%29

4

1 回答 1

0

我认为您应该先调用PL_initialise (argc, argv) ,但除此之外,请查看C++ interface。我在pqConsole项目中广泛使用了最后一个,我必须说它确实C 接口简单得多。

于 2013-09-18T18:59:20.743 回答