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

标签 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 并使用它吗?

最佳答案

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 脚本通常接受选项,看看它们。特别检查 LIBDIRYAPLIBDIR 在哪里。

所以,一旦你有了源压缩包(源的 .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/

相关文章:

c++ - C++ 链表中的虚拟节点

c++ - Objective-C 地址持续多长时间?

ios - 导航栏中的 pageControl 未居中

prolog - 转换一个句子会产生一个无限循环——但如何转换?

prolog - 谓词顺序改变导致无限循环

c++ - 交换整数的代码适用于 C++,但不适用于 C

c++ - Visual Studio - 程序在分析时运行得更快

python - Cocoa 应用程序无法开始循环 python 脚本。通过 xcode 构建/运行时有效

prolog - 在 Prolog 中递归后返回一个值

c++ - 只允许从 0 到 1 的数字