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++ インターフェイスを見てください。私はこれをpqConsoleプロジェクトで広範囲に使用していますが、C インターフェイスよりもはるかに単純であると言わざるを得ません。

于 2013-09-18T18:59:20.743 に答える