SWI-Prolog 找不到 pce 库



我在这上面浪费了一整天,找不到解决方案。由于谷歌没有提供任何其他类似的问题,我确信我一定做错了什么。

我在windows 10上安装了全新的swi-prolog 8.2.3.1。我确保选择了图形选项。主滑动文件夹中有一个xpce文件夹。当我试图将xpce库加载到prolog中时,我得到了以下错误:

?- [library('pce')].
ERROR: source_sink `library(pce)' does not exist
ERROR: In:
ERROR:   [20] throw(error(existence_error(source_sink,...),_8462))
ERROR:   [16] '$resolve_source_path'(library(pce),_8494,[expand(true)]) at c:/program files/swipl/boot/init.pl:2315
ERROR:   [15] '$load_file'(library(pce),user,[expand(true)]) at c:/program files/swipl/boot/init.pl:2289
ERROR:    [9] <user>
ERROR:
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

我试图查阅一个包含:- use_module(library(pce)).的文件,却得到了同样的错误。我不知道该怎么办。它在同一台机器上的wsl上与ubunutu配合使用很好,但没有任何图形界面,它只会帮助确保命令正确。

关于@david tonhofer解决方案结果的更多信息:

我在";C: \Program Files\swipl\xpce\prolog\lib"。所以我尝试了愚蠢的做法:

?- file_search_path(library,X).
X = app_config(lib) ;
X = swi(library) ;
X = swi(library/clp) ;
false.
2 ?- assertz(file_search_path(library,pce('prolog/lib'))).           
true.
3 ?- file_search_path(library,X).
X = app_config(lib) ;
X = swi(library) ;
X = swi(library/clp) ;
X = pce('prolog/lib').
4 ?- file_search_path(library,pce('prolog/lib')).
true.
5 ?- file_search_path(pce,X).
false.
6 ?- assertz(file_search_path(pce,'C:/Program Files/swipl/xpce/')).           
true.
7 ?- file_search_path(pce,X).
X = 'C:/Program Files/swipl/xpce/'.
8 ?- use_module(library(pce)).
true.

应该有一个文件

./swiplexe_8.3.14/lib/swipl/xpce/prolog/lib/pce.pl

在您的安装目录中。

调用

?- use_module(library(pce)).

在Prolog或的顶层

:- use_module(library(pce)).

指示其加载在库路径中找到的CCD_ 2。

可能是你的图书馆路径不完整。。。。

通过发布咨询您的搜索路径

?- file_search_path(library,X).
X = app_config(lib) ;
X = swi(library) ;
X = swi(library/clp) ;
X = pce('prolog/lib').   <--- should be there

通过发布扩展您的搜索路径

?- assertz(file_search_path(library,SOME_PATH_AS_STRING_OR_ATOM)).

然而,事实上

file_search_path(library,pce('prolog/lib')).

表示两级查找。

我们还需要确定pce已设置:

我有这个:

?- file_search_path(pce,X).
X = '/usr/local/logic/swiplexe_8.3.14/lib/swipl/xpce'.

因此可能有必要发布

?- assertz(file_search_path(pce,DIR_OF_XPCE_AS_STRING_OR_ATOM)).

运行以下两行即可:

assertz(file_search_path(library,pce('prolog/lib'))).
assertz(file_search_path(pce,swi(xpce))).

在第二行中,"swi"指的是swipl的根文件夹。如果你想验证所有的路径,这里有一个例子:

?- file_search_path(X,Y).
X = swi,
Y = 'c:/program files/swipl' ;
X = library,
Y = app_config(lib) ;
X = library,
Y = swi(library) ;
X = library,
Y = swi(library/clp) .

最新更新