在SWI Prolog中创建保存状态

在SWI Prolog中创建保存状态,prolog,swi-prolog,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_opti

我正试图在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_可执行文件”?我只需要一个ressource文件,可以从嵌入式C/C++应用程序中加载


任何人都可以提供帮助?

用于
qsave_程序的SWI Prolog文档
简洁易懂,但是 . 最后两部分,创建保存状态使用-c命令行选项编译将至少为您提供一个尝试的示例

我认为这里的问题是,使用单参数版本的
qsave_program
会迫使程序状态不仅保存为资源,而且保存为附加到依赖于机器的可执行文件Prolog emulator末尾的资源。Windows上的此类文件需要
.exe
扩展名,但您正试图强制使用
.prc
扩展名


从这个示例中,我将尝试使用atom
boo64
作为文件参数。如果您想将emulator从程序保存状态中删除,或检查该资源,请查看底部链接的部分。

您确定可以访问驱动器U吗?无论我使用哪个驱动器/文件名/扩展名,我都会得到这个……好的,这很奇怪。我在这里试用了我的SWI 5.10.4(windows),效果很好。我只是在使用了无效的文件名的情况下才得到了这个错误。它变得更奇怪了。如果该文件事先存在,则会将其删除。prolog输出仍然是相同的。我有v5.10.5(windows)Thx,这确实起到了作用:“swipl--stand_-alone=false-o boot64.prc-c test.pl”我只是想知道为什么生成的文件是269KB,而原始文件是113KB(在我的test.pl中只有2个短的testfacts)选项参数之一(属于
qsave_程序
)承诺给你一个人类可读的跟踪什么进入保存的程序。我认为它的
映射(+File)
其中File是将跟踪放入的文件名。当您只关注test.pl文件时,可能会有一些库代码或其他状态信息您没有考虑。