Reputation: 18276
How can I get a pointer to the inner array of a 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: I'm doing that to share the memory used by Java and C++.
Upvotes: 10
Views: 5732
Reputation: 18964
void * data = env->GetDirectBufferAddress(obj);
The ByteBuffer must be a direct one for this to work.
Upvotes: 14
Reputation: 101456
If you're trying to return the address of the first element within m_buffer
, then you can just do:
return m_buffer;
..or:
return &m_buffer[0]
Upvotes: 0