2015-01-20 56 views
3

這可能有點奇怪,但我想知道你是否可以在C++ 14中使用Java。我真的不關心GTK(我覺得它很混亂,而且很複雜)。然而,Swing非常易於使用,您可以非常快速地獲得工作項目。所以我想知道你是否可以在C++中使用Java Swing,所以我可以使用Swing作爲前景,就像你看到的圖形一樣,並且使用C++作爲背景,就像你不能看到的東西,比如計算和對象和東西。因此,如果我能讓C++代碼告訴Swing看起來像什麼,或者什麼時候更新,那對於我想要的項目會非常有用。預先感謝我收到的任何建議。你可以在C++中使用Java Swing嗎

編輯:能夠在Java內部使用C++ 14也是可以接受的。另外,如果任何人都可以得到我的示例代碼,這將是非常有用的。謝謝!

+0

可以調用C++代碼。也許這會有所幫助。 – 2015-01-20 20:57:22

+5

使用JNI(或JNA)來混合兩個世界是可能的,但它不適合初學者。您可能需要查看http://docs.oracle.com/javase/7/docs/technotes/guides/jni/,看看您是否想走得更遠。 – 2015-01-20 20:57:29

+3

我猜你可能會有某種運行的「服務器」,用C++編寫,並響應來自某種Java/Swing「客戶端」的請求。有幾種不同的協議可以用來實現這一點。所有這些都很棘手。你爲什麼不直接用Java編寫應用程序? – 2015-01-20 20:58:56

回答

3

您不應該從C++運行Java,而應該從Java運行C++。 Oracle爲您提供了一種使用JNI加載本地共享庫的方法。

因此,您將使用Swing在Java中創建視圖,然後通過調用預編譯並導出到共享庫中的C++函數來更新視圖。這就是說,使用JNI非常棘手,C++的速度改進可能不值得;所以你應該考慮只使用Java(或者只使用C++和一個庫來創建你的GUI,比如Qt)

0

你走哪個方向是一個趣味問題(從C++程序加載JVM或從JVM端)。

通常你走的是更合乎邏輯的方式,如果你已經有了一個C++程序,你可能想從C++端加載JVM。那將是你的情況。特別是如果你想添加的Java本質上是「腳本化」C++應用程序的話。

如果您已經有了一個Java程序並且想要訪問一個C++ DLL,那麼您可以從Java加載該DLL並編寫一個簡單的JNI /本機Java類。

在我們這個時代,你會使用工具,如JNA爲(而不是JNI):https://github.com/java-native-access/jna

或者您可以使用SWIG生成包裝爲你的C++類:從Java http://www.swig.org/

相關問題