簡體   English   中英

C++ 調用 Java function 使用 JNI 獲取 JavaClassObject 數組

[英]C++ invoke Java function to get Array of JavaClassObject using JNI

我正在虛幻引擎中開發一個應用程序,因此基本編碼在 C++ 中,我必須從.jar 訪問一些方法

我訪問了簡單的 java function 返回: boolean, int, string (本機數據類型):

JavaMethod_GetJavaString  = JavaClassObject_Manager->GetClassMethod("GetJavaString", "()Ljava/lang/String;");

我將此方法稱為:

jstring myJStr = static_cast<jstring>(JavaClassObject_Manager->CallMethod<jobject>(JavaMethod_GetJavaString));
JNIEnv* Env = AndroidApplication::GetJavaEnv();
const char* myUTFString = Env->GetStringUTFChars(myJStr, nullptr);
std::string myCStr(UTF8_TO_TCHAR(myUTFString));

但上面的代碼用於從 JAVA 獲取單個字符串,我想要一個 JAVA 對象數組。 當我在尋找 JAVA 和 JNI 時,我遇到了“jarray”和“jobjectarray”。 但找不到任何文檔或示例來獲取 C++ 中的 java 對象數組

一個字符串數組將是一個jobjectArray

要從該數組中獲取特定的字符串,您將使用GetObjectArrayElement ,它為您提供了一個可以轉換為jobjectjstring

然后以與您相同的方式提取字符串內容,除了您當然應該在之后調用ReleaseStringUTFChars

最后在您的jstring上調用DeleteLocalRef (您可能必須將其轉換回jobject )。

有關這些函數的更多詳細信息,請參閱JNI 函數文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM