我正在用ndk实现一个android函数。 我声明如下当写入jfloat数组时,将'致命信号11(SIGSEGV)写入0x00000010'(代码= 1)'
public static native void calculate(float[] rgb,float factor);
Java中的功能,那么,我写的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)
AF那应用程序崩溃了。我发现写入浮点值时总会发生。阅读不会导致崩溃。
我有什么问题吗?是不是可以写数组值?
很好,你找到了解决方案! :)你应该设置你的答案为接受,所以其他人可以找到这篇文章有用。 –
我知道,但Stackoverflow说我应该等待至少2天,所以我现在不能设置它;) – TSGames