亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在這種情況下,java 對象可以調用本機函數嗎?

在這種情況下,java 對象可以調用本機函數嗎?

Helenr 2021-12-10 16:23:56
Java 可以使用 JNI 調用本機函數。這意味著我可以在我的 C++ 程序中運行一個 JVM,并通過 JNI 僅使用指針構造 java 對象。并且在這個java對象中,可以調用本地函數來訪問運行C++程序中的數據。它運行成功。但是,如果我只是運行 C++ 程序并將一個對象的指針提供給 java 程序。在java中,我可以使用這個指針構造許多對象來調用C++中的本地函數嗎?不同的是我沒有在JNI中構造java對象而只是在C++中獲取對象的指針,然后在java中我調用本地函數來使用JNI訪問C++中的數據。數據存儲在正在運行的 C++ 程序中。那么這可能嗎?C++ 程序可以有一些保護嗎?所以我不能通過對象的指針訪問它的數據?
查看完整描述

2 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

在 Java 中,您只能調用為 JNI 構建的 C++ 函數。另一方面,C++ 動態庫中的任何 JNI 函數都可以從 Java 中調用,惡意 Java 程序可以對您的 JNI 進行逆向工程,并利用它來利用您的 C++ 代碼中的某些漏洞。


查看完整回答
反對 回復 2021-12-10
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

謝謝。我發現我認為 JNI 在錯誤的情況下。我知道 JNI 可以做什么,但忽略了一些重要的事情。

我想問的問題是,能否將C++中的對象指針轉換為java對象,并調用其原生函數來訪問C++中對象的數據。實際上,我需要在 C++ 進程中創建 JVM 來將指針轉換為 Java 或者只是在 Java 進程中調用本機函數。并且當它們是兩個進程時沒有辦法做到這一點,這意味著我運行一個 C++ 進程并將其一個對象的指針提供給另一個正在運行的 Java 進程,然后我想通過調用 Java 進程中的本機函數來訪問 C++ 進程中的數據.

一個進程擁有自己的內存資源,另一個進程無法通過其本機函數調用 (JNI) 訪問。進程可以通過許多方法進行通信,例如套接字。


查看完整回答
反對 回復 2021-12-10
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號