我需要在LISP脚本中加载库。
脚本“loader.lisp”和库“mylib.dll”位于同一文件夹“parent_dir”中。
如果我从文件夹(当前目录=“parent_dir”)内部运行脚本,它可以正常工作:
(load "loader.lisp") ;OK lib loaded successfully
但如果当前目录在其他地方,则无法加载(当然它在错误的目录中查找lib):
(load "parent_dir/loader.lisp") ;ERROR, of course I'm in the wrong working dir!
;Error opening shared object "mylib.dll":
;dlopen(mylib.dll, 10): image not found.
“loader.lisp”脚本包含(也)以下代码:
(setq LIB_PATH "mylib.dll")
(if (string= (software-type) "Darwin")
(setq LIB_PATH "mylib_osx.lib"))
#+allegro
(load LIB_PATH)
#+sbcl
(sb-alien:load-shared-object LIB_PATH)
问题是:如何使loader.lisp脚本“工作目录” - 独立?
更新:我指定解释器可执行文件的脚本不在同一目录中。
非常感谢!
答案 0 :(得分:1)
我建议采用以下解决方案:
这是关于OS工作目录概念的问题,而不是关于Lisp本身的问题。
据我所知,解决方案涉及" PATH"变量可能是最好的。您可以测试此方法并告诉我们它是否有效。