2 回答

TA貢獻1934條經(jīng)驗 獲得超2個贊
在 Java 中,您只能調(diào)用為 JNI 構(gòu)建的 C++ 函數(shù)。另一方面,C++ 動態(tài)庫中的任何 JNI 函數(shù)都可以從 Java 中調(diào)用,惡意 Java 程序可以對您的 JNI 進行逆向工程,并利用它來利用您的 C++ 代碼中的某些漏洞。

TA貢獻1998條經(jīng)驗 獲得超6個贊
謝謝。我發(fā)現(xiàn)我認(rèn)為 JNI 在錯誤的情況下。我知道 JNI 可以做什么,但忽略了一些重要的事情。
我想問的問題是,能否將C++中的對象指針轉(zhuǎn)換為java對象,并調(diào)用其原生函數(shù)來訪問C++中對象的數(shù)據(jù)。實際上,我需要在 C++ 進程中創(chuàng)建 JVM 來將指針轉(zhuǎn)換為 Java 或者只是在 Java 進程中調(diào)用本機函數(shù)。并且當(dāng)它們是兩個進程時沒有辦法做到這一點,這意味著我運行一個 C++ 進程并將其一個對象的指針提供給另一個正在運行的 Java 進程,然后我想通過調(diào)用 Java 進程中的本機函數(shù)來訪問 C++ 進程中的數(shù)據(jù).
一個進程擁有自己的內(nèi)存資源,另一個進程無法通過其本機函數(shù)調(diào)用 (JNI) 訪問。進程可以通過許多方法進行通信,例如套接字。
添加回答
舉報