我成功地使用quicklisp加载了clsql。使用 clsql 加载带有函数定义的源文件也成功。执行 clsql 函数时出现此错误。
(clsql:with-database (db "spendendb" :database-type :sqlite3 :make-default nil) (clsql:database-name db))
WARNING: Requested version "2.0" but #<ASDF/SYSTEM:SYSTEM "uffi"> has no version
debugger invoked on a ASDF/FIND-COMPONENT:MISSING-DEPENDENCY-OF-VERSION in thread #<THREAD tid=4907 "main thread" RUNNING {1000BB00A3}>:
Component CLSQL-UFFI-SYSTEM::UFFI does not match version 2.0, required by
#<SYSTEM "clsql-uffi">
然后我读取了 clsql-uffi.asd 文件。它的 defsystem 没有设置版本号。它具有以下依赖性:
:depends-on (clsql #-:clsql-cffi (:version uffi "2.0")
#+:clsql-cffi cffi-uffi-compat)
Clsql-cffi 不存在。所以它叫uffi。 Uffi 的版本为 2.0.0。在它的 defsystem (uffi.asd) 中。 我用quicklisp卸载了uffi,并在quicklisp/local-projects中手动安装了相同的版本。我手动加载未更改的 uffi,但没有任何变化。然后我将版本更改为2.0并重新加载uffi但错误仍然存在。即使重新启动 SBCL 并重新加载 uffi、clsql 和源文件也不起作用。
SBCL 2.4.8 ASDF 3.3.1
可能是什么原因,有办法解决吗?
UFFI 被放弃。我将
cffi-uffi-compat
与 CLSQL 一起使用,效果很好。 只需在加载 CLSQL 之前确保加载 CFFI 即可。您可以使用 (asdf:load-system :cffi)
来做到这一点。如果您尚未下载,请使用 (ql:quickload :cffi)
。