Monday 15 April 2013

android - What to call method which returns char* ( String in Java and char* in C++)? -


मेरे पास जावा में कार्य है

  सार्वजनिक बूलियन getIsIn (); सार्वजनिक स्ट्रिंग getName ();   

में सी ++ मेरे पास आवरण कार्य हैं जैसे

  bool gPGIsIn () {JNIEnv * env = s3eEdkJNIGetEnv (); रिटर्न (बूल) एवि- & gt; कॉलबॉलीन सिस्टम (जी_ओबज, जी_एस 3 जीजीजीआईएस इन); } Char * gPGGetName () {JNIEnv * env = s3eEdkJNIGetEnv (); // नीचे एक समस्या है, क्या कॉल करने के लिए // वापसी (चार *) env- & gt; CallWahtMethod (g_Obj, g_s3eGPGGetName); }   

जहां

  स्थिर jmethodID g_s3eGPGIsIn = env- & gt; GetMethodID (सीएलएस, "आईआईएसइन", "() जेड"); स्थिर jmethodID g_s3eGPGGetName = env- & gt; GetMethodID (सीएलएस, "गेटनाम", "() Ljava / lang / string;");   

gPGGetName के अंदर कॉल की समस्या जैसी कॉल की तरह कॉल करने के लिए क्या कॉल करता है जो * * स्ट्रिंग में जावा और सीआर + में सी ++ देता है?

यह एक स्ट्रिंग ऑब्जेक्ट देता है और आप उस स्ट्रिंग को एक char * में कनवर्ट करने के लिए उपयोग कर सकते हैं। : <प्री> char * gPGGetName () {jobject objStr = env- & gt; कॉल ऑब्जेक्ट मोड (g_Obj, g_s3eGPGGetName); Jsize len = env- & gt; GetStringutLength (objStr); Const char * strPtr = env- & gt; GetStringutforhars (objStr, 0); चार * बफर = (चार *) मॉलोक ((लेन + 1) * आकारफ (चार)); मेम्क्पी (बफर, स्ट्रिपट्र, लेन); बफर [len] = '\ 0'; एन्वी-> gt; रिलीज़स्ट्रुटिंग एफर्स (ओबीजेएसआर, एसआरपीटीआर); वापसी बफर; }

No comments:

Post a Comment