lisp-无法在Windows上加载.lisp文件

lisp-无法在Windows上加载.lisp文件,windows,common-lisp,clisp,Windows,Common Lisp,Clisp,我正在Windows 7上使用clisp 2.49。我启动命令窗口并导航到带有.lisp文件的目录。然后我运行clisp并尝试加载该文件。我得到一个错误,上面没有名为C的包。在本例中,C指驱动器C,因为填充的绝对路径以C:/../../../lispFile开始。我也尝试过在Allegro CL上加载该文件,但得到了相同的错误 下面是错误消息的屏幕上限 编辑: 我已确定导致错误消息的代码行为: (defparameter c:\\workdir\\aima\\ (truename "~/publ

我正在Windows 7上使用clisp 2.49。我启动命令窗口并导航到带有.lisp文件的目录。然后我运行clisp并尝试加载该文件。我得到一个错误,上面没有名为C的包。在本例中,C指驱动器C,因为填充的绝对路径以C:/../../../lispFile开始。我也尝试过在Allegro CL上加载该文件,但得到了相同的错误

下面是错误消息的屏幕上限

编辑: 我已确定导致错误消息的代码行为:

(defparameter c:\\workdir\\aima\\ (truename "~/public_html/code/"); 
   "The root directory where the code is stored.")
我不确定语法是否不正确

解决:我发现我做错了什么。我被指示修改lisp文件,但我误解了它,并替换了行中错误的部分。这是正确的代码行

(defparameter *aima-root* (truename "c:\\workdir\\aima\\"); 
   "The root directory where the code is stored.")

请注意,还可以在加载期间计算目录:

(defparameter *aima-root* 
  (when *load-pathname*
    (make-pathname :defaults *load-pathname*
                   :name nil
                   :type nil))
   "The root directory where the code is stored.")
*load pathname*是一个标准的公共Lisp变量,将在加载期间绑定到与load函数使用的路径名类似的路径名。因此,它指向正在加载的文件。然后,我们构造一个新的路径名,默认值由加载路径名、无名称和无路径名类型组件填充

因此,您可以基于该计算设置*aima root*变量,并且无论何时加载该文件,都将计算正确的目录


在加载期间绑定了两个常见的Lisp变量*load pathname*和*load truename*。后者是文件的实际物理路径名。通常我更喜欢使用*load pathname*,它可能与物理路径名结构无关。这里的代码使用函数truename,因此可能需要使用*load truename*。常见的Lisp实现通常通过存储路径名来记录函数和其他内容的定义位置。使用路径名查找文件有时比使用truename更容易,因为它可以使用逻辑路径名进行与设备/机器无关的间接寻址。

这看起来更像是您的代码试图使用不存在的包C:something。。。。你能发布文件的内容吗?接下来,你将查看回溯:bt,看看它发生在哪里。请发布一个自我回答,而不是将已解决的问题放在标题中,并将你的答案放在问题中: