我試圖將java Double
傳遞給C++中的本地方法,該方法需要double
作爲輸入參數。但JNI包裝器方法將參數保存爲jobject
而不是jdouble
。任何人都可以幫我解釋一下如何解決這個問題。JNI將Java double轉換爲jdouble問題
是否可以投下jobject
至jdouble
?
我試圖將java Double
傳遞給C++中的本地方法,該方法需要double
作爲輸入參數。但JNI包裝器方法將參數保存爲jobject
而不是jdouble
。任何人都可以幫我解釋一下如何解決這個問題。JNI將Java double轉換爲jdouble問題
是否可以投下jobject
至jdouble
?
您可以輕鬆地轉換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仍然這樣做更容易。
簽名中的小錯誤:應該是** D **,而不是** J **。 jmethodID jmidDoubleValue = env-> GetMethodID(jcDouble,「doubleValue」,「()D」); – 2015-12-16 21:29:50
謝謝!現在我看到有人真的讀到這些答案;-) – 2015-12-16 21:33:29
除去不需要表達感謝等,但是這個問題需要因爲它太廣泛加以改進,並顯示沒有研究。 – Neeku 2015-03-25 12:36:35
爲什麼?爲什麼不把它作爲一個「雙」並避免整個priblem? – EJP 2015-03-25 13:02:28
這看起來像http://stackoverflow.com/questions/10515886/converting-jdouble-to-double-of-type-c – 2015-03-25 13:08:36