我需要从用Java创建的本地bytebuffer创建一个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
.
.
.
}
非常感谢任何建议。
答案 0 :(得分:1)
感谢您的回复。卸载应用程序后,清理构建版本,然后重新启动Eclipse就可以了。
答案 1 :(得分:0)
要在JNI模块中创建jobject,请使用NewDirectByteBuffer
。