在SWI-Prolog中创建已保存的状态

时间:2012-04-12 14:59:10

标签: prolog swi-prolog

我正在尝试从Windows中的顶层创建一个已保存的状态,但我一直收到此错误:

1 ?- qsave_program('U:/boo64.prc').
%   library(broadcast) compiled into broadcast 0.00 sec, 7,504 bytes
%   library(debug) compiled into prolog_debug 0.00 sec, 21,544 bytes
%   library(option) compiled into swi_option 0.00 sec, 14,416 bytes
%   library(arithmetic) compiled into arithmetic 0.00 sec, 33,872 bytes
%  library(settings) compiled into settings 0.00 sec, 120,152 bytes
% c:/program files/swi-prolog/library/listing compiled into prolog_listing 0.00 sec, 180,936 bytes
%   library(occurs) compiled into occurs 0.00 sec, 5,144 bytes
%  library(prolog_clause) compiled into prolog_clause 0.00 sec, 61,544 bytes
% c:/program files/swi-prolog/library/prolog_stack compiled into prolog_stack 0.00 sec, 77,320 bytes
ERROR: '$mark_executable'/1: file `U:/boo64.prc' does not exist (No such file or directory)
2 ?- 

我认为应该这样做。为什么它甚至试图调用'mark_executable'?我想要的是一个ressource文件,我可以从我的嵌入式C / C ++应用程序加载。

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:3)

qsave_program的SWI-Prolog文档简洁且难以理解,但是 start here。最后两个部分使用-c命令行选项创建保存状态编译至少会为您提供一个示例。

我认为这里的问题是使用qsave_program的1参数版本强制程序状态不仅作为资源保存,而且作为附加到机器相关可执行文件末尾的资源保存,Prolog模拟器。 Windows上的此类文件需要.exe扩展名,但您尝试强制.prc扩展名。

从示例中我将尝试使用atom boo64作为 File 参数。如果要从程序保存状态中删除模拟器,或检查该资源,请查看this page底部链接的部分。