मुझे कुछ जेएनआई फ़ंक्शंस मिल गए हैं जिन्हें एक ही सी ++ ऑब्जेक्ट पर काम करना है। मैं उस ऑब्जेक्ट को जावा ऑब्जेक्ट में सहेजना चाहता हूं जिसके माध्यम से जेएनआई फ़ंक्शन का आह्वान किया जाता है, लेकिन ऐसा लगता है कि जावा के पास बाद में पहुंचने के लिए पॉइंटर्स को स्टोर करने का कोई तरीका नहीं है।जावा पर वापसी C++ ऑब्जेक्ट
ठीक है मुझे लगता है कि मैं एक भयानक काम अपने आप को इसलिए यहाँ समझा कर रहा हूँ एक उदाहरण है:
void clear_numbers(JNIEnv *env, jobject me) {
me.myCppVector.clear();
}
void set_number(JNIEnv *env, jobject me, jint index, jint num) {
me.myCppVector[index]=num;
}
jint get_number(JNIEnv *env, jobject me, jint index) {
returnme.myCppVector[index];
}
मेरे समस्या एक jobject.myCppVector पैदा कर रही है, ताकि मैं अलग से इसका इस्तेमाल करने में सक्षम हो जाएगा फ़ंक्शन कॉल
मुझे आशा है कि कोई मेरी ramblings
शायद एक पूर्णांक के लिए सूचक परिवर्तित (मैं सी ++ वर्ग
CppClass
नाम दिया), और फिर जावा वस्तु – ignisके एक क्षेत्र में पूर्णांक की दुकान है कि असुरक्षित नहीं माना जाता है? साथ ही, सभी प्लेटफार्मों पर आकार (शून्य *) के बराबर आकार (जिंट) है? – Afiefh
मुझे किसी भी कारण से पता नहीं है जिसके लिए यह असुरक्षित होना चाहिए। हालांकि, विभिन्न प्लेटफॉर्म पर पॉइंटर्स के अलग-अलग आकार होते हैं, जबकि जावा आदिम प्रकार नहीं होते हैं, और निश्चित रूप से इसका मतलब है कि आपको जावा कोड में विभिन्न प्रकार के प्राइमेटिव्स को पॉइंटर्स को मैप करना होगा - 32 बिट के लिए int, 64 बिट के लिए लंबा इत्यादि। http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#85587 – ignis