Мне нужно вернуть HashMap из собственной реализации Android.При запуске приложения я получаю следующее падение:
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, он больше не падает.Я считаю, что подпись в таблице сопоставления неверна.Было бы замечательно, если бы кто-то мог предложить правильную подпись для использования в таблице или другой подход, чтобы исправить / реализовать то же самое.