讓我們舉一個過分基本的例子,我有一個程序通過一個目錄並抓取目錄中的文件列表。爲了參數的緣故,假設這是用C++完成的。那麼我希望使用Java Swing來呈現文件列表?前端Java,後端C++,如何加入?
這是如何完成的?
讓我們舉一個過分基本的例子,我有一個程序通過一個目錄並抓取目錄中的文件列表。爲了參數的緣故,假設這是用C++完成的。那麼我希望使用Java Swing來呈現文件列表?前端Java,後端C++,如何加入?
這是如何完成的?
你可以讓你的C++程序寫入Stdout,然後你的Java程序可以讀取它。然後,您可以讓您的Java前端執行您的C++後端,然後讀取結果。
This Article是如何使用stdout/stderr的一個很好的信息來源。
C++程序將列表放入特定文件中,Java程序讀取該文件? 另一種方式可能是使用套接字(我不知道Java足夠了解它的IPC可能性),以便在「實時」節目之間進行通信。最後,如果你必須同時使用C++和Swing,那麼你就不能在一個單獨的程序中完成這個任務。
+1以使用套接字。我總是喜歡這種方法。它可以是瞬時的,同步很容易。您可以讓Java程序使用TCP套接字進行偵聽,然後C++程序可以連接到該端口併發送TCP消息。 –
* ...你不能在一個單獨的程序中完成*除非你使用JNI –
您可以通過Java Native Interface (JNI)來完成。甲骨文有一個official guide,但你可能會發現谷歌更容易爲教程。
Kevin建議使用Java Native Interface(JNI)。或者,如果您需要在C++之間建立流程邊界,則需要將運行C++代碼的進程中的對象序列化爲JVM進程。
你也可以在這個Dr. Dobb's article from 1998找到一些用途。
混淆Java和任何其他語言(不會編譯成JVM字節碼)是異端的。它必須都是純粹的Java,免得cooties消耗你,或者什麼。 – Omnifarious