【发布时间】:2012-09-27 11:08:51
【问题描述】:
我目前正在使用 ndk 实现一个 android 功能。 我在java中声明了这个函数
public static native void calculate(float[] rgb,float factor);
然后,我写了C函数:
JNIEXPORT void JNICALL Java_<package>_calculate(
JNIEnv * env,
jobject object,
jfloatArray rgbObject,
jfloat factor){
jfloat* rgb = (*env)->GetFloatArrayElements(env,rgbObject,0);
if(rgb==NULL) return;
rgb[0]=5; // Test, crash!
(*env)->ReleaseFloatArrayElements(env,rgb,rgbObject,0);
}
但是,每次我尝试使用数组和某个值调用函数时,我都会收到 logcat 消息:
A/libc(16064):致命信号 11 (SIGSEGV) 位于 0x00000010(代码=1)
之后,应用程序崩溃。我发现它总是在写入浮点值时发生。阅读不会导致崩溃。
我有什么问题吗?不可以写数组值吗?
【问题讨论】:
标签: java android arrays android-ndk