Haxe:从neko,cpp和java sys树导入

时间:2014-03-31 19:36:19

标签: packages haxe nme neko multi-targeting

我想使用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

我该怎么做?

1 个答案:

答案 0 :(得分:3)

如果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:)