接口从C-PROGRAMM XCode中以SWI-Prolog的(Interface from C-

2019-11-01 05:44发布

我想下MAC OS X到SWI-Prolog的使用的XCode IDE从C代码接口。

从来就包括在头文件和使用下面的示例代码:

#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)

有谁可以帮我把我的代码的运行?

在此先感谢和亲切的问候

Solick

Answer 1:

即使你在设置中设置正确的路径,它不会自动查找正确的库链接。 你必须添加实际的图书馆也是如此。



Answer 2:

我在Ubuntu的工作(是的,在Windows中,仍然),我也体会到了pkg配置的支持。

如果你已经熟悉它,注意,当本地编译,SWI-Prolog的生成目录〜/ lib目录/ pkgconfig。

然后,你可以添加目录的pkg-config配置,并使用与(恕我直言)很好地支持西南。



文章来源: Interface from C-Programm in XCode to SWI-Prolog