尝试在我的测试Haxelib上使用haxelib run
command时出现异常:
haxelib run haxelib-test
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");
}
}
我的haxelib.json
看起来像这样:
{
"name": "haxelib-test",
"license": "MIT",
"tags": [],
"description": "",
"version": "0.0.1",
"classPath": "src/",
"main": "Main"
}
答案 0 :(得分:5)
来自你链接的Haxelib docs:
可以使用
run.n
执行haxelib.json
帮助程序或haxelib run
中定义的主要类的库。
由于您提供的是main
类,Haxelib正在尝试使用--interp
参数在Haxe的内置宏解释器中运行您的代码。
Haxe 3的宏解释器不支持线程,因此错误。您可以通过编译run.n
文件并将其打包到库中来解决此问题,因此脚本在Neko VM中执行:
haxe -main Main -neko run.n
Haxe 4 introduced线程支持preview.5
版本中名为"Eval"的新宏解释器。从该版本开始,您可以使用eval.vm.Thread
。但请注意,这会使Haxelib的run
命令对运行较旧的Haxe版本的人不起作用。因此,如果你想获得最大的兼容性,那么现在就坚持使用Neko。