2013-05-09 2 views
1

Я хочу передать двойное значение из C++ в Java (Android) с помощью JNI.Почему неправильные значения передаются между Java и C++ через JNI?

Соответствующие C++ код:

JNIEXPORT jdouble JNICALL 
Java_test_MPEG_DASH_ffmpeg_PlayerUI_Notif(JNIEnv* env, jobject obj,jint st){ 

    jdouble p=receiver->buffer->Notify(); 
    LOGI("Notifyyyyyyyyy from jni is %d ",p); 
    return p; 
} 

дисплеи 35, 36, и т.д.

При входе в Java с помощью вызова нативный метод, неправильные значения возвращаются: 0,0000133333

Соответствующий код Java:

double buf=Notify(); 
Log.d(TAG, "Bufffffffffffffffffffffffffer :"+buf" ms"); 

Почему значения непоследовательны?

+1

немного больше кода и контекста может быть полезно – Blackbelt

+0

Я отредактировал мое сообщение и добавил полный код –

ответ

3

«% d» не является спецификатором формата, совместимым с типами с плавающей точкой. Если вы его используете, вы будете вынуждать неверное истолкование битов, содержащих jdouble, и напечатать неправильное значение.

Верно, что значение, возвращаемое Java, является правильным (там имеется достаточное количество принудительного ввода), а также неправильное внесение в журнал.

Смежные вопросы