我使用的是Racket 6.8,当项目在模块中包含raco exe
表单时,尝试运行使用(place)
创建的EXE时,我收到了一个奇怪的错误{ {1}}来自主模块。
可以使用以下设置重现:
main.rkt
require
place.rkt
#lang racket
(require "place.rkt")
(module+ main
(sync (place-dead-evt (start-place))))
如果我使用Racket解释器,这完全正常:
#lang racket
(provide start-place)
(define (start-place)
(place pch
(displayln "Hello from a place!")))
如果我使用$ racket main.rkt
Hello from a place!
#<place-dead-evt>
创建一个EXE,我会得到以下内容:
raco exe
如果我将$ raco exe -o place main.rkt
$ ./place
dynamic-require: unknown module
module-name #<resolved-module-path:(submod '#%embedded:g2133:place place-body-1)>
#<place-dead-evt>
函数移动到main.rkt,则可执行文件正常工作。但是我不想在我正在进行的主要项目中这样做。
有没有办法调用(start-place)
这样才能正常工作?我尝试使用raco exe
选项添加place.rkt,但这会导致++lib
崩溃。