ASDF 系统 ufi 不返回版本号

问题描述 投票:0回答:1

我成功地使用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

可能是什么原因,有办法解决吗?

common-lisp sbcl asdf quicklisp
1个回答
0
投票

UFFI 被放弃。我将

cffi-uffi-compat
与 CLSQL 一起使用,效果很好。 只需在加载 CLSQL 之前确保加载 CFFI 即可。您可以使用
(asdf:load-system :cffi)
来做到这一点。如果您尚未下载,请使用
(ql:quickload :cffi)

© www.soinside.com 2019 - 2024. All rights reserved.