मेरे जावा कोड में मेरे पास 2 डी फ्लोट सरणी float[x][4] floatArray
है। यहां x
1 और 25 के बीच हो सकता है। मुझे JNI
के माध्यम से C++
विधि में इस 2 डी फ्लोट सरणी को पास करना होगा। मेरे JNI
विधिफ्लोट पास करने का सबसे आसान तरीका [] [] से सी ++ जेएनआई
jboolean MyJNIMethod(JNIEnv * env, jobject obj, jobjectArray myArray)
{
//how to convert this myArray to something that can be safely passed to C++ method below
}
MyJNIMethod
अंदर
मैं एक C++
विधि कॉल और इस विधि
bool MyCplusPlusMethod(float coordinates[][4])
{
}
मैं ठीक से jobject परिवर्तित फ्लोट करने में एक कठिन समय चल रहा है के लिए 2 डी नाव सरणी जावा से लिया पारित करने के लिए है [] [] देशी विकास ज्ञान की कमी के कारण। क्या कोई मुझे सबसे सरल और सुरक्षित संभव तरीका बता सकता है? धन्यवाद
आप इस आसान बनाने में कर सकते हैं:
रिहाई स्थानीय सरणी संदर्भ जावा पंक्ति-प्रमुख 1 डी सरणी, और फ्लोट में गुजर रही [] [4]। सी ++ में, 1 डी और 2 डी सरणी स्मृति में समान दिखती हैं। –
जेएनआई पर एक-आयामी सरणी पारित करने के लिए दूसरा सुझाव। याद रखें कि आपको आकार को पास करने की भी आवश्यकता होगी। – jackrabbit
मैंने जेएनआई और सी ++ के अंदर वेक्टर <वेक्टर> का उपयोग करने का निर्णय लिया। अब मैं जेएनआई में फ्लोट [] [] पढ़ रहा हूं। वेक्टर > पॉप्युलेटिंग> और इसे C++ –