首先,感谢您的时间和帮助。
我正在制作一个 Android + JNI 应用程序,它试图达到一个 10 位置的 Mat 数组(openCV 类型)。我正在关注本教程:将 Mats 数组传递给本机代码
但是当我到达“CallLongMethod”行时,它会抛出一个 SIGSEGV 错误。我检查了指针(getPtrMethod、bufimgsfieldid、bufimgsArray)都不是0。代码在这里:
jmethodID getPtrMethod = env->GetMethodID(matclass, "getNativeObjAddr", "()J");
jfieldID bufimgsfieldid = env->GetFieldID(thisclass, "bufImgs", "[Lorg/opencv/core/Mat;");
jobjectArray bufimgsArray = (jobjectArray)env->GetObjectField(thisobject, bufimgsfieldid);
Mat* nativeBufImgs = new Mat[10];
LOGD("Creation Passed");
for (int i = 0; i < 10; i++) {
LOGD("Makint the %i", i);
nativeBufImgs[i] = *(Mat*)env->CallLongMethod(env->GetObjectArrayElement(bufimgsArray, i), getPtrMethod);
}
知道出了什么问题吗?