0

MAC OS X で XCode IDE を使用して C コードから SWI-Prolog に接続したいと考えています。

ヘッダー ファイルをインクルードし、次のサンプル コードを使用します。

#include <stdio.h>
#include <SWI-Prolog.h>
#include <SWI-Stream.h>

int main(int argc, const char * argv[])
{

char *av[10];
int ac = 0;

av[ac++] = "/opt/local/lib/swipl-6.2.2/bin/i386-darwin12.2.1/swipl";
av[ac++] = "-x";
av[ac++] = "mystate";
av[ac]   = NULL;

#ifdef READLINE /* Remove if you don't want readline */
PL_initialise_hook(install_readline);
#endif

if ( !PL_initialise(ac, av) )
    PL_halt(1);

PL_halt(PL_toplevel() ? 0 : 1);


printf("done...\n");
return 0;
}

また、ビルド設定でヘッダーと lib パスにリンクしました。

ヘッダー検索パス: /opt/local/lib/swipl-6.2.2/include

ライブラリ検索パス: /opt/local/lib/swipl-6.2.2/lib/i386-darwin12.2.1

しかし、コードの実行中に次のエラーが発生します。

Undefined symbols for architecture x86_64:
  "_PL_halt", referenced from:
      _main in main.o
  "_PL_initialise", referenced from:
      _main in main.o
  "_PL_toplevel", referenced from:
       _main in main.o
 ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

コードを実行するのを手伝ってくれる人はいますか?

よろしくお願いいたします。

ソリック

4

2 に答える 2

0

設定で正しいパスを設定しても、リンクする正しいライブラリが自動的に検出されません。実際のライブラリも追加する必要があります。

于 2012-11-27T11:32:29.237 に答える
0

私は Ubuntu で作業しており (そして、Windows でもまだ)、pkg-configのサポートに感謝するようになりました。

すでに慣れている場合は、ローカルでコンパイルすると、SWI-Prolog がディレクトリ ~/lib/pkgconfig を生成することに注意してください。

次に、そのディレクトリを pkg-config 構成に追加し、(IMHO) 優れたサポートで SW を使用できます。

于 2012-11-27T12:10:58.800 に答える