java - r16 - ndk r13
Obtener el puntero de un Java ByteBuffer a través de JNI (2)
¿Cómo puedo obtener un puntero a la matriz interna de un 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);
}
PD: estoy haciendo eso para compartir la memoria utilizada por Java y C ++.
Si intentas devolver la dirección del primer elemento dentro de m_buffer
, entonces puedes hacer:
return m_buffer;
..o:
return &m_buffer[0]
void * data = env->GetDirectBufferAddress(obj);
El ByteBuffer debe ser directo para que esto funcione.