@@ -12,23 +12,30 @@ extern "C" {
1212/*
1313 * Class: com_durongze_jni_CallC
1414 * Method: CInterface
15- * Signature: ([Ljava/lang/String;[I[FI)V
15+ * Signature: ([Ljava/lang/String;[I[FI)[Ljava/lang/String;
1616 */
17- JNIEXPORT void JNICALL Java_com_durongze_jni_CallC_CInterface
17+ JNIEXPORT jobjectArray JNICALL Java_com_durongze_jni_CallC_CInterface
1818 (JNIEnv *env, jobject, jobjectArray names, jintArray ages, jfloatArray heights, jint num)
1919 {
20+ jobjectArray result;
21+ jclass intArrCls = env->FindClass (" java/lang/String" );
22+ result = env->NewObjectArray (num, intArrCls, NULL );
2023 int idx = 0 ;
2124 jint *as = env->GetIntArrayElements (ages, 0 );
25+ int asLen = env->GetArrayLength (ages);
2226 jfloat *hs = env->GetFloatArrayElements (heights, 0 );
23- for (; idx < num; ++idx) {
27+ int hsLen = env->GetArrayLength (heights);
28+ for (idx = 0 ; idx < num; ++idx) {
2429 jstring ns = static_cast <jstring>(env->GetObjectArrayElement (names, idx));
2530 const char * pns = env->GetStringUTFChars (ns,0 );
2631 printf (" %s: names[%d]:%s, ages[%d]:%d, heights[%d]:%lf\n " ,
2732 __FUNCTION__, idx, pns, idx, as[idx], idx, hs[idx]);
2833 env->ReleaseStringUTFChars (ns, 0 );
34+ env->SetObjectArrayElement (result, idx, ns);
2935 }
3036 env->ReleaseIntArrayElements (ages, as, 0 );
3137 env->ReleaseFloatArrayElements (heights, hs, 0 );
38+ return result;
3239 }
3340
3441#ifdef __cplusplus
0 commit comments