0

首先,感谢您的时间和帮助。

我正在制作一个 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);
}

知道出了什么问题吗?

4

0 回答 0