0
我已經搜索了這個問題,並找到了一些答案,但還沒有真正找到我在找什麼。 我使用C++的JNI調用Java,並逐個設置Java對象的字段。如下所示:將C++對象傳遞給Java,並使用JNI逐個設置對象參數
jobject jSomeObject = (jobject) JVM_ENV->CallObjectMethod(myObj, getObjMethodID, "");
JVM_ENV->CallVoidMethod(jSomeObject , setMethodID1, SomeIntVal);
JVM_ENV->CallVoidMethod(jSomeObject , setMethodID2, SomeStringVal);
jSomeObject中的所有參數都是像這樣一個一個設置的。而且你看到有多個JNI調用正在進行中,這很昂貴。我在想的是,如果有一種方法可以在本地環境中設置所有參數併發送對象一次以避免多個JNI調用。 一些帖子說,不可能將自定義對象傳遞給JNI。我可以做嗎 ?
編輯: 上面的調用改變的東西:
jobject jSomeObject = (jobject) JVM_ENV->CallObjectMethod(myObj, getObjMethodID, "");
someClass obj = new someClass();
obj.setMethod1(someInvVal);
obj.setMethod2(someStringVal); // so on...
JVM_ENV->CallVoidMethod(jSomeObject , setMethodID1, obj);
myObj :: getObjMethodID是工廠,但我只能一個一個地設置參數,而不是一勞永逸。我無法一次通過所有參數,因爲可能有數十個參數。 我已編輯我的帖子,以顯示我在找什麼。在本機端創建一個對象並將該對象設置爲Java端。 – nav