我正在寻找一个轻量级的 Prolog 引擎来嵌入到 Mac OSX 下的 Obj-C 应用程序中。
在 Java 中,有一些出色的实现具有我需要的特性:可部署性、轻便性、动态可配置性、与 Java 的集成以及易于互操作性。
你能推荐一些类似 C/C++ 的东西吗?
经过几次搜索,我找到了 YAProlog 并阅读了 here它似乎可以用作从其他程序调用的库。但是(愚蠢的问题):
- 我对 UNIX 没有经验,我不知道如何使用 YAP 手册中的命令生成 libyap.a 文件...
- 然后我可以在我的 Xcode 项目中复制 libyap.a 并使用它吗?
最佳答案
GProlog
支持 Mac OS X (Darwin),并且有一个 Mac OS X Leopard 的安装程序。和 here你可以阅读如何 call gprolog from C (另请阅读 this )。然后,您可以使用 gcc
而不是使用 gplc
,前提是您添加了正确的链接选项,这可能有点“棘手”;所以你可以用 gplc
生成目标文件,然后将所有东西粘合在一起......
关于雅普:
1) 通常带有 autoconf 的包只用下面的命令“序列”编译
./configure
make
最后的 make install
应该安装所有东西,并且必须由有权这样做的用户执行。手册建议创建一个 ARCH
(ARCH.?) 目录并从那里做所有事情(所以,../configure
而不是 ./configure
)。
configure
脚本通常接受选项,看看它们。特别检查 LIBDIR
和 YAPLIBDIR
在哪里。
所以,一旦你有了源压缩包(源的 .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
您稍等... 目录中会填充下一步所需的所有内容。查看创建的 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
“规范地”安装的,因此请按照您的方式使用它使用任何其他“系统范围”的库存档。
关于c++ - 在 Obj-C 项目中嵌入 Prolog 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245405/