私はAndroidでc-jni関数を書いていますが、ロングオブジェクトの作成に問題があります。私はコンストラクタを呼び出すことに成功しましたが、longValueでオブジェクトの値を読み取ると、間違った結果になります。JNI:間違った値で作成されたロングオブジェクト
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);
私は上記のコードは、しかし、ログに出力される値であり、ログに4242を印刷することを期待する
1691768.
誰もが4242が書き込まれていない理由についてのアイデアを持っていますログ?
おかげで、。ちょうどjlongが動作するように4242をキャスト – Dan
@ダン:これはあなたの側に、おそらくC + +のですか? –