我有两个数组:
auto inputArray = reinterpret_cast<jbyteArray>(mainEnv->NewGlobalRef(imageDataArray));
auto output = reinterpret_cast<jfloatArray>(mainEnv->NewGlobalRef(data));
当我尝试:
auto input = env->GetByteArrayElements(inputArray, nullptr);
我收到此错误:
&#34;应用程序中的JNI检测错误:尝试使用float []&#34;
类型的对象获取字节原始数组元素我猜是&#34; inputArray&#34; (字节数组)指向&#34;输出&#34;的相同内存位置(浮点数组)。
我该怎么检查?
答案 0 :(得分:2)
您可以判断两个对象引用是否指向具有JNI IsSameObject
函数的同一对象。
错误消息告诉您,您正在GetByteArrayElements
上呼叫float[]
。获取数组对象的类(使用GetObjectClass
)可以让您在传递给本机代码的位置查询对象的类,这样您就可以确认数组具有您期望的类型。从那里你可以缩小你的注意力,找出出错的地方。