无法在quicklisp中加载sdl-gfx

时间:2011-07-16 01:40:49

标签: common-lisp sdl quicklisp

我一直在使用quicklisp安装lispbuilder-sdl系列并在sdl-gfx中遇到错误:

CL-USER> (ql:quickload "lispbuilder-sdl-gfx")
To load "lispbuilder-sdl-gfx":                                                  
  Load 1 ASDF system:                                                           
    lispbuilder-sdl-gfx                                                         
; Loading "lispbuilder-sdl-gfx"                                                 
...........;                                                                    
           ; compilation unit aborted                                           
           ;   caught 1 fatal ERROR condition  

Unable to load any of the alternatives:                                         
   ("libSDL_gfx.dylib" (:FRAMEWORK "SDL_gfx"))
   [Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]

我在macosx 10.6下使用slime + emacs + SBCL。我从这个链接安装了SDL.framework:

http://thirdcog.eu/apps/frameworks#glew

一个名为sdl_with_friends.zip的文件,并将其放在/ Library / Frameworks下。然而它仍然抱怨找不到框架。 对此有何想法?

3 个答案:

答案 0 :(得分:2)

在Mac OSX上安装lispbuilder-sdl的最简单方法是启动SBCL并使用Quicklisp:

(ql:quickload "lispbuilder-sdl")

它可能会失败,但您可以编译位于“~swlylisp / dists / quicklisp / software / lispbuilder-20110619-svn / lispbuilder-sdl / cocoahelper”中的OS-X特定助手库;只需cd到此目录并输入“make”

要验证是否有效,请尝试以下操作:

(ql:quickload "lispbuilder-sdl-examples")
(lispbuilder-sdl-examples:bezier)

另一个常见的问题是当你使用Emacs / SLIME时。可可位必须在主线程上运行,因此您必须调用以下内容:

#+darwin #+sb-thread
(let ((thread (first (last (sb-thread:list-all-threads)))))
  (sb-thread:interrupt-thread thread #'(lambda () (ql:quickload "lispbuilder-sdl-examples")))
  (sb-thread:interrupt-thread thread #'(lambda () (lispbuilder-sdl-examples:bezier))))

答案 1 :(得分:0)

错误是抱怨它无法加载SDL的动态库。对不起 - 我不太了解mac上的目录布局(这似乎是你工作的地方),所以我不能确切地告诉你如何解决这个问题。但是你应该安装一个名为libSDL_gfx.dylib的文件(可能是这个扩展名),错误信息意味着CFFI无法找到它。

答案 2 :(得分:0)

使用自制软件,您可以brew install sdl_gfx