haxelib run 无法启动新线程?

标签 haxe neko haxelib

尝试使用 haxelib run command 时出现异常在我的测试 Haxelib 中:

haxelib run haxelib-test

D:\HaxeToolkit\haxe\std/neko/vm/Thread.hx:54: characters 20-71 : Can't create thread from within a macro



没有线程一切正常。

哈希码:
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"
}

最佳答案

来自 Haxelib docs你链接:

Libraries with either a run.n helper or a main class defined in haxelib.json, can be executed using haxelib run.



由于您提供的是 main类,Haxelib 正在尝试使用 --interp 在 Haxe 的内置宏解释器中运行您的代码。争论。

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

哈克斯 4 introduced对其名为 "Eval" 的新宏解释器的线程支持在 preview.5释放。从该版本开始,您可以使用 eval.vm.Thread .但是,请注意,这会使您的 Haxelib 的 run命令不适用于运行旧版 Haxe 的人。因此,如果您要获得最大的兼容性,请暂时坚持使用 Neko。

关于haxelib run 无法启动新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50222376/

相关文章:

c++ - Haxe - 创建 C++ 独立可执行文件

haxe - 使用 haxe 作为 c++ 和 JavaScript 之间的转译器

linux - 如何使用 minGW 交叉编译 Haxe/OpenFL 生成的源代码?

macros - 在 Haxe 宏中读取元数据

c++ - NME 在 C++ 和 Neko 目标中更改窗口标题

haxe - Neko 和 haxe.Timer.delayed()

haxelib run <lib> 获取用户目录

algorithm - 产生异常模式的中点位移二维算法

Haxe,ListSort.sort() 问题