我需要从 Java 创建的 native 字节缓冲区创建 opencv::Mat。但是,当我尝试获取返回 ByteBuffer 的 java 方法的 methodID 时,出现段错误。我还包含了 onMeshGenerate 函数,因为从 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 后,一切正常。
关于java - 返回 native 字节缓冲区的 Java 方法的 JNI GetMethodID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443282/