SBCL VLIME 使用CFFI

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

我正在尝试学习 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

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

您需要确保CFFI在编译时被加载。单文件解决方案是

(eval-when (:compile-toplevel :load-toplevel :execute)
  (ql:quickload :cffi))

...

(defpackage :foo
  (:use :cl :cffi)
  ...)

如果您使用 ASDF(更具可扩展性),则使您的系统依赖于 CFFI 并在第一个实例中编译并加载 system

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