【问题标题】:Haxe: Import from neko, cpp and java sys treesHaxe:从 neko、cpp 和 java sys 树导入
【发布时间】:2014-03-31 19:36:18
【问题描述】:

我想用 Haxe 写一个库,其他项目可以用各种不同的语言。

目前我的图书馆顶部有:

import neko.io.File;
import neko.io.FileInput;
import neko.io.FileOutput;
import neko.FileSystem;
import neko.io.Process;

所以我的库可以很好地编译为 neko,使用 -neko 标志。但是,如果我尝试使用 -cpp 标志,则找不到包:

$ haxe -cp src -main sws/Root.hx -cpp build/sws.CXX
src/sws/Root.hx:3: characters 0-20 : You can't access the neko package with current compilation flags (for neko.io.File)

我认为解决方案是像这样进行导入:

import sys.io.File;
import sys.io.FileInput;
import sys.io.FileOutput;
import sys.FileSystem;
import sys.io.Process;

让 Haxe 将 sys 更改为 nekocpp,具体取决于我使用的编译标志。 (假设所有模块都支持所有目标语言。)但这也不起作用。

$ haxe -cp src -main sws/Root.hx -neko build/sws.n
src/sws/Root.hx:3: characters 0-19 : Class not found : sys.io.File
$ haxe -cp src -main sws/Root.hx -cpp build/sws.CXX
src/sws/Root.hx:3: characters 0-19 : Class not found : sys.io.File

我应该怎么做?

【问题讨论】:

  • 你的编译行是什么? sys.io.File 在 cpp 和 neko 上运行良好
  • 很高兴知道,谢谢。我已经添加了我的编译行。

标签: packages haxe nme neko multi-targeting


【解决方案1】:

如果 import neko.io.File; 有效,您可能使用的是 Haxe 2.x,而不是 Haxe 3。(除非我遗漏了什么?)

在 Haxe 3 中,您可以使用 import sys.io.File 等。Haxe 3 的迁移说明可以在以下位置找到:http://haxe.org/manual/haxe3/migration

在 Haxe 2 中,您必须针对每个目标执行此操作。我会做这样的事情:

#if neko
    import neko.io.File;
    import neko.io.FileInput;
    import neko.io.FileOutput;
    import neko.FileSystem;
    import neko.io.Process;
#elseif cpp
    import cpp.io.File;
    import cpp.io.FileInput;
    import cpp.io.FileOutput;
    import cpp.FileSystem;
    import cpp.io.Process;
#end

当然假设所有这些类都存在于您的 Haxe 版本的 CPP 目标中。

如果没有,也许考虑升级到 Haxe 3 :)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多