【发布时间】:2016-11-03 18:53:26
【问题描述】:
我正在尝试修改 jfloatArray 中的一些值,然后再将其返回给 java Android 代码。
我发现我不能使用常规方式 newArray[i] = result[i]; 来执行此操作,而应该使用 env->SetFloatArrayElement(newArray,i,result[i]);。
问题是这个函数抛出错误:
[armeabi-v7a] 编译++ arm : tensorflow_mnist SetFloatArrayElement(newArray,i,result[i]); ^
代码:
JNIEXPORT jfloatArray JNICALL
TENSORFLOW_METHOD(detectDigit)(JNIEnv* env, jobject thiz, jintArray raw_pixels) {
jboolean iCopied = JNI_FALSE;
jint* pixels = env->GetIntArrayElements(raw_pixels, &iCopied);
jfloatArray newArray = env->NewFloatArray(2);
jfloat *result = process( reinterpret_cast<int*>(pixels) );
for(int i=0; i<2; ++i) {
//VLOG(0) << " (" << i << "): " << newArray[i];
//newArray[i] = result[i];
//env->SetFloatArrayElement(newArray,i,result[i]);
}
env->ReleaseIntArrayElements(raw_pixels, pixels, JNI_ABORT);
env->ReleaseFloatArrayElements(newArray, result, JNI_ABORT);
free(result);
return newArray;
}
【问题讨论】:
标签: java android c++ android-ndk