我需要从Android本机实现返回HashMap。在运行该应用程序时,我遇到以下崩溃:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
下面是实现细节。
Java端的方法签名:
private native HashMap<String, Double> testBitmapJNI(Bitmap bitmap);
在C ++代码中:
static const JNINativeMethod g_NativeMethods[] = {
....
{"testBitmapJNI", "(Landroid/graphics/Bitmap;)Ljava/util/HashMap;",
(void*)testBitmapJNI},
....
};
jobject testBitmapJNI(JNIEnv* env, jobject instance, jobject bitmap){
jobject myHashMap= ...
/* every thing is working good here */
return myHashMap;
}
如果我将testBitmapJNI的签名更改为返回void,它将不再崩溃。我认为映射表中的签名不正确。如果有人可以建议在表中使用正确的签名,或者采用其他方法来修复/实现相同的签名,那就太好了。