尝试在我的测试Haxelib上使用haxelib run命令时出现异常:
haxelib run haxelib-test
Run Code Online (Sandbox Code Playgroud)
D:\ HaxeToolkit\haxe\std/neko/vm/Thread.hx:54:字符20-71:无法在宏内创建线程
没有线程,一切正常.
Haxe代码:
import neko.vm.Thread;
class Main {
static function main() {
trace("starting");
var commandsThread = Thread.create(read);
trace("ending");
}
static function read() {
trace("new thread");
}
}
Run Code Online (Sandbox Code Playgroud)
我haxelib.json看起来像这样:
{
"name": "haxelib-test",
"license": "MIT",
"tags": [],
"description": "",
"version": "0.0.1",
"classPath": "src/",
"main": "Main"
}
Run Code Online (Sandbox Code Playgroud)
从您链接的Haxelib文档中:
可以使用执行
run.n辅助程序或主类定义的库.haxelib.jsonhaxelib run
由于您提供了一个main类,Haxelib正在尝试使用该--interp参数在Haxe的内置宏解释器中运行您的代码.
Haxe 3的宏解释器不支持线程,因此错误.您可以通过编译run.n文件并将其打包到库中来解决此问题,因此脚本在Neko VM中执行:
haxe -main Main -neko run.n
Run Code Online (Sandbox Code Playgroud)
Haxe 4 在发布版本中为其新的宏解释器"Eval" 引入了线程支持.从该版本开始,您可以使用.但请注意,这会使您的Haxelib 命令无法用于运行较旧的Haxe版本的人.因此,如果您想获得最大兼容性,请立即坚持使用Neko.preview.5eval.vm.Threadrun