通过JNI获取Java ByteBuffer的指针
如何获得指向Java ByteBuffer内部数组的指针?
JNIEXPORT void JNICALL test(JNIEnv *env, jobject thiso) { jclass cls = env->FindClass("java/nio/ByteBuffer"); jmethodID aloc = env->GetStaticMethodID(cls, "allocateDirect", "(I)Ljava/nio/ByteBuffer;"); jobject obj = env->CallStaticObjectMethod(cls, aloc, 1000); }
PS:我这样做是为了分享Java和C ++使用的内存。
void * data = env->GetDirectBufferAddress(obj);
ByteBuffer必须是一个直接的工作。
如果你试图在m_buffer
返回第一个元素的地址,那么你可以这样做:
return m_buffer;
..要么:
return &m_buffer[0]