2014-03-31 36 views
0

我想使用Haxe編寫一個可以被其他項目以各種不同語言使用的庫。Haxe:從neko,cpp和java sys樹中導入

目前,我有我的庫頂部:

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

所以我的圖書館編譯成ネ就好,使用-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 

我應該怎麼做呢?

+2

什麼是您的編輯系列? sys.io.File在cpp和neko上工作正常 – Peekmo

+0

很高興知道,謝謝。我已經添加了我的編譯行。 – joeytwiddle

回答

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

+0

非常感謝您的解釋。我想我會升級到Haxe 3路線! – joeytwiddle