2016-12-09 1 views
1

Ich möchte Java Float von einem Java-Objekt mit jni Schnittstelle eingereicht.jni Fehler in android zwischen Android ndk12b und ndk13b

Java-Code:

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

JNI Code in 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 immer 0.0 in vielen Android-Handys bekommen. und sogar in mehreren Handys wie XIAOMI3, erhalten Sie eine sehr große Anzahl.

Das Problem fehlt bei der Verwendung von ndk12b. Also, was ist das Problem mit ndk13b, wenn Float-Feld von Java-Objekt erhalten?

+0

Sie müssen vollständig qualifizierten Klassennamen gehen in 'Findclass()'. – timrau

Antwort

0

Ich habe dieses Problem gelöst. In meiner jni Schnittstelle Android.mk. entfernen Sie die keine Verwendung falgs, und alles ist in ndk12b und ndk13b in Ordnung. enter image description here

Verwandte Themen