繁体   English   中英

从XCode中的C-Programm到SWI-Prolog的接口

[英]Interface from C-Programm in XCode to SWI-Prolog

我想在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)

有谁能帮助我让我的代码运行?

在此先感谢和亲切的问候

索里克

即使您在设置中设置了正确的路径,它也不会自动找到要链接的正确库。 您还必须添加实际的库。

我在Ubuntu中工作(是的,仍然在Windows中),并且我开始欣赏pkg-config的支持。

如果您已经熟悉它,请注意,在本地编译时,SWI-Prolog会生成一个目录〜/ lib / pkgconfig。

然后,您可以将该目录添加到pkg-config配置中,并使用具有(IMHO)良好支持的SW。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM