4

尝试在我的测试 Haxelib 上使用该haxelib run命令时出现异常:

haxelib run haxelib-test

D:\HaxeToolkit\haxe\std/neko/vm/Thread.hx:54:字符 20-71:无法从宏中创建线程

没有线程一切正常。

哈希码:

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"
}
4

1 回答 1

5

从您链接的Haxelib 文档中:

可以使用. run.n_haxelib.jsonhaxelib run

由于您提供了一个类,因此 Haxelib 正在尝试使用该参数main在 Haxe 的内置宏解释器中运行您的代码。--interp

Haxe 3 的宏解释器不支持线程,因此出现错误。您可以通过编译一个run.n文件并将其与您的库一起打包来解决此问题,因此该脚本在 Neko VM 中执行:

haxe -main Main -neko run.n

Haxe 4在发行版中为其新的宏解释器“Eval”引入了线程支持。从该版本开始,您可以使用. 但是,请注意,这会使您的 Haxelib命令不适用于运行旧版 Haxe 的人。因此,如果您要获得最大的兼容性,请暂时使用 Neko。preview.5eval.vm.Threadrun

于 2018-05-07T21:49:31.747 回答