我创建了一个简单的hello world(hello.lisp),代码:
(defun main ()
(format t "Hello,World"))
,用于测试CCL的本机可执行文件编译的程序。我继续从CCL GUI编译和加载缓冲区(使用Clozure Common Lisp版本1.10-store-r16266(DarwinX8664))。
当我测试时:
? (main)
Hello,World
NIL
?
查找主要功能。当我继续使用:进行编译时(save-application "/tmp/h" :toplevel-function #'main :prepend-kernel t)
,它将继续进行操作,并且CCL退出。
文件已创建,大小约为56MB。当我尝试运行它时,我得到以下输出:
错误:通用函数没有适用的方法:#使用参数调用时:(#:NOTE-CURRENT-PACKAGE#)执行时:#,在进程toplevel(6)中。错误:通用函数没有适用的方法:#使用参数调用时:(#:BREAK-OPTIONS-STRING T)执行时:#,在进程toplevel(6)中。错误:通用函数没有适用的方法:#使用参数调用时:(#:BREAK-OPTIONS-STRING T)执行时:#,在进程toplevel(6)中。错误:通用函数没有适用的方法:#使用参数调用时:
错误继续。我做错了什么?是虫子吗?
谢谢
我在来源的可可粉中找到了关键字:note-current-package
和:break-options-string
。由于准备prepend-kernel t
了当前会话中使用的内核,因此您似乎应该在应用程序中包含可可豆启动。但是,在这些关键字上分派的方法仅在ns-application上分派,而您的新应用程序似乎没有。
解决方案可能是通过将代码加载到非GUI映像中,或通过将此类内核的路径名用作:prepend-kernel
参数,来在内核中添加无可可的前缀。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句