0

我想使用 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 更改sysnekocpp取决于我使用的编译标志。(假设所有模块都可以在所有目标语言中使用。)但这也不起作用。

$ 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

我应该怎么做?

4

1 回答 1

3

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

在 Haxe 3 中,您将使用import sys.io.Fileetc。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 :)

于 2014-04-01T12:08:53.237 回答