【问题标题】:resolving and instantiating non imported packages with --run and --macro include使用 --run 和 --macro 解析和实例化非导入包包括
【发布时间】:2017-03-22 08:27:00
【问题描述】:

我一直在使用 --run 命令,并且一直在尝试包含一些包 运行它时,使用 --macro include 像这样:

haxe -lib nape --macro include('nape.geom.Vec2') --run Main 'nape.geom.Vec2'

然后使用 Type.resolve 以便我可以像这样使用 Type.createInstance 实例化它们:

class Main 
{
  static function main() 
  {
    trace("hello", Sys.args());
    var c = Type.resolveClass(StringTools.replace(Sys.args()[0], "'", ""));
    trace(c);
    Type.createInstance(c, []);
  }
}

我也尝试使用 --interp 和这个命令:

haxe -lib nape --macro include('nape.geom.Vec2') -main Main --interp -D nape.geom.Vec2

它们都按照 --run 的预期运行、跟踪和接收 Sys.args(进行了小的代码更改以适应 interp 的“-D nape.geom.Vec2”),但 resolveClass 始终返回 null,所以我无法将其传递给 creatInstance 而不会出错。

我正在使用 haxe 3.4.2 稳定版

我做错了什么?这可以通过 --run 命令或 --interp 命令实现吗?

我真的很喜欢关于其中一些功能的更完整的文档

【问题讨论】:

    标签: macros haxe


    【解决方案1】:

    “include”宏包含一个包,而不是一个类。

    它适用于:

    haxe -lib nape --macro include('nape.geom') --run Main 'nape.geom.Vec2'
    

    http://api.haxe.org/haxe/macro/Compiler.html#include

    【讨论】:

    • 运行该命令,它仍然为类类型返回 null。有什么想法吗?
    • @ediblebird,dead code elimination 也许?也许用-D dce-debug 编译会产生一些有用的信息。对于单个类,也可以直接在命令行/build.hxml中包含:haxe -lib nape nape.geom.Vec2 --run Main 'nape.geom.Vec2'
    • 直接包含单个类并添加-dce no 似乎可以解决问题!
    【解决方案2】:

    好的,所以我通过链接我需要的各个类并禁用死代码消除(正如 Jonas Malaco 上面所建议的那样)让它工作

    使用原始帖子中的代码和此构建命令:

    haxe -lib nape nape.geom.Vec2 -dce no --run Main 'nape.geom.Vec2'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2010-12-16
      • 2010-11-29
      • 1970-01-01
      • 2011-01-20
      • 2014-03-13
      相关资源
      最近更新 更多