2013-05-09 51 views
1

我想使用JNI將C++中的double值傳遞給Java(Android)。爲什麼不正確的值通過JNI在Java和C++之間傳遞?

相關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 2013-05-09 13:25:29

+0

我編輯了我的文章並添加了完整的代碼 – 2013-05-09 14:31:35

回答

3

「%d」不是與浮點類型兼容的格式說明符。如果使用它,則會強制誤解構成jdouble的位,並打印出錯誤的值。

返回給Java的值可能是正確的(這裏有相當數量的類型強制執行),並且記錄不正確。