一个Java方法的JNI GetMethodID返回一个本地字节缓冲区



我需要从Java中创建的本机字节缓冲区创建一个opencv::Mat。然而,当我试图获得返回ByteBuffer的java方法的methodID时,我得到了一个段错误。我也包括onMeshGenerated函数,因为我从JNI中获取和调用该方法没有问题。

Java代码:

public void onMeshGenerated() {
    mOwner.onMeshGenerated();
}
public ByteBuffer getRGBData() {
    return mOwner.getRGBData();
}
JNI代码:

JNIEXPORT void JNICALL Java_com_aquifi_facescan_Scanner3DNativeAPI_Start
  (JNIEnv * env, jobject obj)
{
    jclass cls = env->GetObjectClass(obj);
    javaOnMeshGeneratedMethodRef = env->GetMethodID(cls, "onMeshGenerated", "()V");
    javaOnGetRGBMethodRef = env->GetMethodID(cls, "getRGBData", "()Ljava/nio/ByteBuffer;");
    // Segfault on the line above
  .
  .
  .
}

谢谢你们的回复。在卸载应用程序、清理构建并重新启动Eclipse之后,一切都正常了。

在JNI模块中使用NewDirectByteBuffer .

相关内容

  • 没有找到相关文章

最新更新