【问题标题】:compile with swi-prolog without including interactive prolog environment into binary使用 swi-prolog 编译,而不将交互式 prolog 环境包含到二进制文件中
【发布时间】:2013-03-18 15:44:53
【问题描述】:

我正在学习 prolog,我使用 swi-prolog 作为编译器/解释器。我有这个 hello world 文件:

:- initialization(main).
main :- format('Hello, world').

但是当我尝试使用swipl -o hello.exe -c hello.pro 编译它并运行二进制文件hello.exe 时,它首先运行目标(主),然后将我返回到 swi-prolog 交互环境。我如何编译它,使它成为一个没有 prolog 环境的功能程序? 我还尝试在 main 末尾添加halt,但这根本无法编译。当我尝试这样做时,编译器会打印“Hello, world”,然后停止编译。

【问题讨论】:

  • 为了清楚起见,您是说在初始化指令中将halt 放在main 之后?或者您在定义main/0 时添加了halt 作为尾调用?
  • @hardmath 作为定义 main/0 的尾调用。

标签: prolog swi-prolog


【解决方案1】:

我愿意:

  • 删除:-initialization 指令
  • 编译为:swipl.exe -nodebug -g true -O -q --toplevel=main --stand_alone=true -o hello.exe -c hello.pro

这应该可以解决问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多