2011-11-03 43 views
0

是否有可能訪問java中用C++創建的指針?就像我創建一個字符串並在C++中爲變量指定一個變量(給變量一個內存空間),是否有一些命令可以讓我使用該指針並查看它?或者我必須輸出字符串到一個文件,然後預製java文件I/O。你能訪問一個在C++中創建的指針,在java中

+0

我相信你可以獲得價值,雖然我懷疑你可以用它做很多事情。 – Pubby

回答

1

你將不得不將它轉換成Java通過JNI理解的東西 - JNI將有一個方法來將你的指針轉換爲一個字符串,但是隨後Java將複製內存並且將創建一個普通的Java字符串 - 在給java之後改變你的內存不會改變Java字符串。

我不認爲即使JNI允許通過直接內存訪問通信,但我可能是錯的,我最近沒有看過它。

+0

另一種方法是JNA,它可以更簡單使用。 –

0

您應該能夠使用JNI:http://java.sun.com/docs/books/jni/ 您也可以嘗試使用痛飲:http://www.swig.org/

但如果你真的需要做的,你在你潛水前,應評估。你只是想分享數據嗎?你可以使用網絡來做到這一點。在兩個程序之間傳遞一個tcp消息。存在許多用於共享數據的選項。

+0

單獨添加網絡通信以在Java和C++代碼之間共享數據可能不必要的複雜。 –

+0

@ AndyThomas-Cramer我不確切知道這張海報試圖完成什麼。我只是鼓勵他去探索他的選擇以找到最佳解決方案。 – anio

+0

是的,我只是試圖在程序之間交換數據,但只通過文件I/O在C++中完成。我應該這樣做嗎?有輸出的數據,然後在java中讀取它? – JAW1025