2011-11-10 10 views
11

वास्तव में, मैं फोन एक C++ समारोह:जॉबजेक्ट सरणी का उपयोग कैसे करें? (JNI)

JNIEXPORT शून्य JNICALL Java_test_main_JniFunctions_testObject (JNIEnv * env, jobject obj, jobjectArray objArray) {....}

और मैं क्या करना पसंद है, मूल वस्तु के मूल्य वापस आ गया है। इस वस्तु के लिए जावा कोड घोषणा को ध्यान में रखते:

jniFct.testObject(new Object[][] 
     { 
      {"testTable"}, 
      {0, 0.0, "aaa"}, 
      {1, 1.1, "bbb"}, 
      {2, 2.2, "ccc"} 
     }); 

उदाहरण में, दूसरे कॉलम में तीसरी पंक्ति से मूल्य मिलता है।

किसी को भी यह कैसे पता चल रहा है पर एक विचार है ??

उत्तर

12
jobject row = env->GetObjectArrayElement(objArray, 2); 
jobject value = env->GetObjectArrayElement((jobjectArray)row, 1); 
const char* cvalue = env->GetStringUTFChars((jstring)value, 0); 
+0

धन्यवाद, लेकिन यह मुझे उस त्रुटि ::> IntelliSense देता है: प्रकार का एक मूल्य "स्थिरांक चार *" के प्रकार के "चार *" एक इकाई प्रारंभ करने में नहीं किया जा सकता और अगर मैं "" "चार बदलने * "" "एक" "स्ट्रिंग" "", यह मुझे उस तरह का मान देता है "" "<ü" "" तो ..... – Jsncrdnl

+0

संकलन त्रुटियों को देखना दिलचस्प होगा। मुझे लगता है, आपको 'कॉन्स char * cvalue' का उपयोग करने की आवश्यकता है। मैं जवाब संपादित करूंगा ... – weekens

+0

बढ़िया! यह काम किया !! धन्यवाद ! ^^ – Jsncrdnl

संबंधित मुद्दे