2015-03-25 83 views
1

我試圖將java Double傳遞給C++中的本地方法,該方法需要double作爲輸入參數。但JNI包裝器方法將參數保存爲jobject而不是jdouble。任何人都可以幫我解釋一下如何解決這個問題。JNI將Java double轉換爲jdouble問題

是否可以投下jobjectjdouble

+0

除去不需要表達感謝等,但是這個問題需要因爲它太廣泛加以改進,並顯示沒有研究。 – Neeku 2015-03-25 12:36:35

+1

爲什麼?爲什麼不把它作爲一個「雙」並避免整個priblem? – EJP 2015-03-25 13:02:28

+0

這看起來像http://stackoverflow.com/questions/10515886/converting-jdouble-to-double-of-type-c – 2015-03-25 13:08:36

回答

1

您可以輕鬆地轉換Double在C++一倍,

JNIEXPORT jdouble JNICALL Java_PriceEngine_getPrice (JNIEnv *env, jobject thiz, jobject price) { 
    jclass jcDouble = env->FindClass("java/lang/Double"); 
    jmethodID jmidDoubleValue = env->GetMethodID(jcDouble, "doubleValue", "()D"); 
    double dPrice = env->callDoubleMethod(jmidDoubleValue, price); 
} 

但在Java仍然這樣做更容易。

+1

簽名中的小錯誤:應該是** D **,而不是** J **。 jmethodID jmidDoubleValue = env-> GetMethodID(jcDouble,「doubleValue」,「()D」); – 2015-12-16 21:29:50

+1

謝謝!現在我看到有人真的讀到這些答案;-) – 2015-12-16 21:33:29