我正在尝试学习 Common Lisp,但在设置环境时遇到了非常困难。
我正在尝试使用
cffi
包装 C 库,但我似乎无法让 sbcl 找到 cffi
包。我之前使用(ql:quickload :cffi)
安装过它。
我正在使用 vlime。
我尝试过以下方法:
(defpackage my-package
(:use :cl :cffi))
(in-package :my-package)
在这种情况下我会收到以下错误:
The name "CFFI" does not designate any package.
当我尝试在 vlime 中使用
\of
编译文件时。
如果我在上一个代码之前或之后添加
(ql:quickload :cffi)
或 (asdf:load-system :cffi)
,此错误仍然存在。另外,似乎让vlime陷入了不可恢复的状态。
如果我从
:cffi
中删除 :use
那么我会收到错误
Package CFFI does not exist.
尝试使用
ql
时错误仍然存在。
我还尝试使用
(require :cffi)
以及与 ql
和 asdf
导入的组合的所有排列。
我已经快要放弃 common lisp 了。我做错了什么?
编辑:
我的
:depends-on (:cffi)
文件中也有 asd
。
您需要确保CFFI在编译时被加载。单文件解决方案是
(eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload :cffi))
...
(defpackage :foo
(:use :cl :cffi)
...)
如果您使用 ASDF(更具可扩展性),则使您的系统依赖于 CFFI 并在第一个实例中编译并加载 system。