在Obj-C项目中嵌入Prolog引擎

时间:2010-07-14 10:54:19

标签: c++ objective-c prolog embedded-language

我正在寻找一款轻量级的Prolog引擎,它将嵌入到Mac OSX下的Obj-C应用程序中。
在Java中,有一些具有我需要的特性的优秀实现:可部署性,轻量级,动态可配置性,与Java的集成以及易于互操作性。 你能推荐类似的C / C ++吗?


经过多次搜索后,我找到了YAProlog并阅读here,它似乎可以用作从其他程序调用的库。但是(愚蠢的问题):

  1. 我对UNIX缺乏经验,我不知道如何使用YAP手册的那些命令生成libyap.a文件......
  2. 我可以在我的Xcode项目中复制libyap.a并使用它吗?

1 个答案:

答案 0 :(得分:3)

GProlog支持Mac OS X(Darwin),还有适用于Mac OS X Leopard的安装程序。 here您可以阅读call gprolog from C的内容(另请阅读this)。然后,您可以使用gplc而不是使用gcc,只要您添加适当的链接选项,这可能有点“技巧”找到;所以你可以使用gplc生成目标文件,然后将所有内容粘合在一起......

关于YAP:

1)通常使用autoconf打包只需使用以下“命令序列”编译

./configure
make

最终make install应该安装所有内容,并且必须由有权这样做的用户执行。手册建议创建ARCH(ARCH。?)目录并从那里开始执行所有操作(因此,../configure而不是./configure)。

configure脚本通常接受选项,看看它们。请检查LIBDIRYAPLIBDIR

的具体位置

所以,一旦你拥有了源代码tarball(源代码的.tar.gz),就应该将其解压缩,像tar -xzf Yap-5.1.3.tar.gz这样的命令可以在GNU / Linux上运行,同样的tar也可以也适用于Mac OS X ......

让我们看看./configure --help,看看你是否在继续之前看到了想要使用的有趣选项。

现在,让我们按照手册的建议(即使它看起来很奇怪; - )

mkdir ARCH.  # I would put GNUlinux, or maybe
             # the name must be exactly this?
cd ARCH.
../configure

您等待......并且目录将填充下一步所需的evrything。看一下创建的Makefile,你会看到像

这样的行
#
# where YAP should look for binary libraries
#
LIBDIR=$(EROOTDIR)/lib
YAPLIBDIR=$(EROOTDIR)/lib/Yap

在Makefile的目标中,我也可以阅读libYap.a。所以,试试make(我不会这样做,以检查可能出错的地方,也因为我在GNU / Linux上以及如何解决问题可能会有所不同),最后,你应该获得libYap.a,等等,成为“root”(管理员)并执行

make install

install目标中(对我来说是install_unix)我读了$(INSTALL_DATA) -m 755 libYap.a $(DESTDIR)$(LIBDIR)这意味着您的.a已经安装好,应该可以让编译器使用了如果您知道lib的位置(并且您知道它,请参阅上文并记住配置的选项)

2)当然,您可以直接将其复制到您需要的位置并“直接”使用它,但由于它是make install“规范”安装的,因此请按照您使用其他任何方式的方式使用它系统范围“lib archive。