我创建了一个简单的hello world (hello.lisp),代码:
(defun main ()
(format t "Hello,World")),用于测试CCL的本地可执行编译的程序。我继续从CCL编译和加载缓冲区(使用ClozureCommonLispVersion1.10-store-r16266 (DarwinX8664))。
当我测试它时:
? (main)
Hello,World
NIL
?它找到了主要功能。当我继续用:(save-application "/tmp/h" :toplevel-function #'main :prepend-kernel t)编译它时,它会继续操作并退出CCL。
该文件是创建的,其大小为56 is。但是,当我尝试运行它时,我得到了以下输出:
错误:没有适用于泛型函数的方法:#当使用参数调用时:(#:NOTE CURRENT-PACKAGE #)在执行:#,in process toplevel(6)时。错误:没有适用于泛型函数的方法:#当使用参数调用时:(#:断开选项-字符串T)在执行:#,in process toplevel(6)时。错误:没有适用于泛型函数的方法:#当使用参数调用时:(#:断开选项-字符串T)在执行:#,in process toplevel(6)时。错误:泛型函数:#在调用参数时没有适用的方法:
错误就会继续。我做错什么了?是虫子吗?
谢谢
发布于 2014-11-23 15:28:40
我发现关键字:note-current-package和:break-options-string在可可原料的来源。由于prepend-kernel t为当前会话中使用的内核做了准备,所以您似乎会在应用程序中包含可可启动。然而,那些关键字的调度方法只在‘ns-应用程序上执行,而您的新应用程序似乎并不是这样。
解决方案可能是在不使用cocoa的情况下添加内核,方法是将代码加载到非GUI映像中,或者为:prepend-kernel参数使用这样一个内核的路径名。
发布于 2014-11-23 16:02:18
要在Mac上创建Clozure的可执行文件:
ccl::build-application。Mac上的GUI应用程序需要一些基础设施,然后再创建它。注意,CCL附带了一个ccl/examples/cocoa/currency-converter/中的示例应用程序。就我个人而言,我更喜欢使用存储库中的CCL --它通常比中的版本要新一些。https://stackoverflow.com/questions/27089578
复制相似问题