J'écris une fonction c-jni dans Android, et j'ai des problèmes avec la création d'un objet long. J'ai réussi à appeler le constructeur, mais quand je lis la valeur de l'objet avec longValue, j'obtiens le mauvais résultat.JNI: Long-objet créé avec une valeur erronée
jmethodID longConstructor;
jmethodID longGetLongValue;
jclass cls;
jobject obj;
// Create a object of type Long.
cls = (*env)->FindClass(env,"java/lang/Long");
longConstructor = (*env)->GetMethodID(env,cls,"<init>","(J)V");
obj = (*env)->NewObject(env, cls, longConstructor, 4242);
// Get the value by calling the function longValue.
longGetLongValue= (*env)->GetMethodID(env,cls,"longValue","()J");
long return_long_value = (*env)->CallLongMethod(env, obj, longGetLongValue);
// Log the result.
LOGD("%li", return_long_value);
j'attendre à ce que le code ci-dessus imprimera 4242 dans le journal, mais la valeur qui est imprimée dans le journal est 1691768.
Est-ce que quelqu'un a une idée sur la raison pour laquelle 4242 est pas écrit dans le bûche?
Merci, ça marche pour moi. Il suffit de lancer le 4242 pour que jlong fonctionne – Dan
@Dan: c'est probablement du C++ de votre côté, non? –