2011-03-13 102 views
2

只是想知道是否有可能以更新的C代碼,這是用Java創建的ByteArray,而不C.如何在C通過JNI更新字節組不返回的ByteArray

回來吧,我還有情況,即我需要通過JNI多次更新單個字節陣列,並且從C返回bytearray需要很多JNI調用。請讓我知道是否有人知道如何做到這一點?

代碼應該是這樣的陣列中的這個

Java代碼的

byte[] storeData; 
updateFromNative(storeData); //update the byteArray in native code; 
//use the storeData in Java with updated value. 

回答

3

更新數據是一回事,分配是另一回事。如果您知道大小,並且不應該改變,請事先分配數組,並將其傳遞給JNI,然後使用JNI調用SetByteArrayElement()和SetByteArrayRegion()來設置元素。像這樣:

byte[] storeData = new byte[Size]; 
updateFromNative(storeData); 

但是,如果你想(重新)在JNI中分配數組,你會堅持返回它。 Java中沒有輸出參數。繞過它的一個方法是傳遞一個類,該類是一個成員變量,並更新該成員變量,但這會使JNI部分變得複雜一些。