【发布时间】:2012-11-27 11:17:29
【问题描述】:
我想在 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;
}
我还在构建设置中链接到头文件和库路径:
头文件搜索路径:/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)
有人可以帮助我运行我的代码吗?
在此先感谢和亲切的问候
索利克
【问题讨论】:
-
i386 与 x86_64 不匹配?
-
hmm 这是 MAC OS X 的安装文件...但也许我应该尝试在我的 Mac 上自己编译 swi-prolog...谢谢您的提示,我会试一试...但另一方面:从终端运行 swi-prolog 工作正常且没有问题...
-
关于架构 x86_64 的 ld 警告...似乎配置错误
-
嗯,这可能是问题所在...我使用 MAC 网站上的预编译版本,从控制台运行 swi 工作正常。也许这些库仅在 MAC 上编译为 32 位?
标签: c xcode macos swi-prolog