我想从Windows命令行运行prolog文件(Load.pl
),执行查询(将结果输出到文件)并退出。
我的Load.pl
文件加载了多个源文件:
/**
Loading files
*/
consult('C:/MyPath/Prolog/Segments_5.pl').
consult('C:/MyPath/Prolog/Segments_Global.pl').
consult('C:/MyPath/Prolog/Produits.pl').
consult('C:/MyPath/Prolog/SelChemin.pl').
consult('C:/MyPath/Prolog/OutputFunctions.pl').
我正在使用的命令行是:
"C:\Program Files (x86)\swipl\bin\swipl.exe" -f 'C:/MyPath/Prolog/Load.pl' -g output_src('test.txt'),halt -t 'halt(1)'
我想要运行的查询是output_src('test.txt')
它的实现位于OutputFunctions.pl
文件中:
output_src(Path) :-
open(Path, write, Stream),
( propose_source(ListeSources), write(Stream, ListeSources), fail
; true
),
close(Stream).
当我打开prolog终端,并手动执行5 consult
指令然后output_src
指令它工作正常,但当它被命令行执行时,我收到一条错误消息我这个:
ERROR: Prolog initialisation failed:
ERROR: '<meta-call>'/1: Undefined procedure: output_src2/0
P.S。:我真的只是从prolog开始,我需要将它与一些.NET代码连接。
感谢您提供的任何帮助! 问候, 若埃尔
答案 0 :(得分:2)
仔细查看错误消息:
ERROR: Prolog initialisation failed: ERROR: ''/1: Undefined procedure: output_src2/0
请注意,它找不到output_src2/0
,即arity 零的谓词。
为什么它会搜索output_src2
arity为零?
可能是因为命令行标志:
-g output_src('test.txt'),halt
应该阅读:
-g "output_src('test.txt'),halt"
或:
-g 'output_src(\'test.txt\'),halt'
确切的引用规则取决于您的shell和操作系统。