【问题标题】:Embedding a Prolog engine in Obj-C projects在 Obj-C 项目中嵌入 Prolog 引擎
【发布时间】:2023-03-21 10:40:01
【问题描述】:

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


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

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

【问题讨论】:

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


    【解决方案1】:

    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 上,我如何解决问题可能会有所不同),最后,你应该获得@987654346 @,因此,成为“root”(管理员)并执行

    make install
    

    install 目标中(对我来说正好是install_unix)我读到$(INSTALL_DATA) -m 755 libYap.a $(DESTDIR)$(LIBDIR) 这意味着您的.a 已安装并且应该可以被编译器使用,前提是您知道lib 在哪里(你知道的,见上文并记住配置的选项)

    2) 当然,您可以将它直接复制到您需要的地方并“直接”使用它,但由于它是由make install“规范”安装的,因此您可以像使用任何其他“系统范围”一样使用它" 库档案。

    【讨论】:

      猜你喜欢
      • 2013-09-09
      • 2012-03-07
      • 1970-01-01
      • 2020-10-01
      • 2017-06-25
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      相关资源
      最近更新 更多