簡體   English   中英

為什么通過JNI在Java和C ++之間傳遞不正確的值?

[英]Why are incorrect values being passed between Java and C++ via JNI?

我想使用JNI將C ++中的double值傳遞給Java(Android)。

相關的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");

為什么值不一致?

“%d”不是與浮點類型兼容的格式說明符。 如果使用它,將強制誤解構成jdouble的位,並打印不正確的值。

返回Java的值可能是正確的(那里有相當多的類型強制執行),並且記錄不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM