2016-12-09 9 views
1

Я хочу получить java float, зарегистрированный из java-объекта с интерфейсом jni.jni ошибка в android между android ndk12b и ndk13b

JAVA CODE:

public class JavaObject immplements Serializable { 
    public float floatfiled1 = 0f; 
    public float floatfield2 = 0f; 
} 

JNI код в C++:

jclass jclazz = jenv->FindClass("JavaObject"); 
jfieldID field_id = jenv->GetFieldID(jclazz, "floatfiled1", "F"); 
float test_v = jenv->GetFloatField(javaobject, field_id); 
LOGD("[JNI] test_v=%f", test_v); 

test_v всегда получают 0.0 во многих андроид мобильных телефонов. и даже в нескольких мобильных телефонах, таких как XIAOMI3, получить очень большое количество.

Проблема отсутствует при использовании ndk12b. Итак, в чем проблема с ndk13b, когда вы получаете поле float из java-объекта?

+0

Вам необходимо передать полностью квалифицированное имя класса в 'FindClass()'. – timrau

ответ