本帖最后由 rily22 于 2010-04-15 10:24:54 编辑

解决方案 »

  1.   

    jclass ByteBufferClass = env->GetObjectClass(outBuf); 
    jmethodID putByteMethodId = env->GetMethodID(ByteBufferClass,"put","(B)Ljava/nio/ByteBuffer;"); 
    while(index < n) 
          env->CallObjectMethod(outBuf,putByteMethodId,*(Out+index++)); 暂时只能用这个方法解决了 好像直接复制一块内存不行 
      

  2.   

    在Java端
    ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1000);
    returnJNI(byteBuffer);而在Native端
    void returnJNI(JNIEnv* env, jobject thiz, jobject byteBuffer) {
        jbyte *directBuffer = (*env)->GetDirectBufferAddress(env, byteBuffer);
        // TODO
    }如此一來 Java和Native便會共享同一塊記憶體空間 在Native操作後 Java端的值也會隨之改變但用此方法必須注意同步問題!