2009-07-10 266 views
4

我在寫一個C++程序,它需要能夠讀取一個複雜而深奧的文件類型。我已經有一個Java程序來處理這些文件,其中包括將它們轉換爲更簡單的文件格式的功能。我的想法是,無論何時我的程序需要讀取複雜文件中的信息,讓它調用Java方法將其轉換爲更簡單的文件類型,然後將它寫出到我的程序可以輕鬆讀取的臨時文件中。這些文件足夠小,性能可以接受。我正在用Qt編寫我的程序並在Windows Vista機器上運行它。從C++調用Java方法的最簡單方法是什麼?

我已經研究過使用Java本地接口,但越多我看它越多似乎我應該不惜一切代價避免它。有沒有更好的方法來實現這一點,還是應該繼續使用JNI方法?

回答

6

你需要多久做一次?如果不是那麼頻繁的話,你可以在那裏賣出去做。只需生成命令行即可。 JNI的工作原理,但設置起來有點痛苦。一旦你有了它,它應該工作得很好。

3

爲什麼不爲java算法創建可執行的jar?

1

您可能也有興趣SWIG。 「SWIG是一種軟件開發工具,可將用C和C++編寫的程序與各種高級編程語言連接起來,SWIG可用於不同類型的語言,包括Perl,PHP,Python,Tcl和Ruby等常用腳本語言。」

+0

OP似乎想要相反。雖然SWIG看起來很有趣。 – 2009-07-10 18:14:18

1

如果GCJ是您的一個選項,它可以讓您將Java程序編譯爲本地代碼,該代碼可以作爲庫與您的C++(特別是g ++)程序鏈接,還包含一個頭文件,其中包含直接的CNI所有Java的東西到C++ - 包到命名空間,類到類,成員函數的方法等等。

2

使用GCJ將Java變成一個lib供您鏈接到。

它可能與JNI一樣痛苦,但至少你不會加載或依賴於JRE了。

相關問題