1.java String转换 C str
char* Jstring2CStr(JNIEnv* env, jstring jstr) {char* rtn = NULL;jclass clsstring = (*env)->FindClass(env,"java/lang/String");jstring strencode = (*env)->NewStringUTF(env,"GB2312");jmethodID mid = (*env)->GetMethodID(env,clsstring, "getBytes", "(Ljava/lang/String;)[B");jbyteArray barr= (jbyteArray)(*env)->CallObjectMethod(env,jstr,mid,strencode); // String .getByte("GB2312");jsize alen = (*env)->GetArrayLength(env,barr);jbyte* ba = (*env)->GetByteArrayElements(env,barr,JNI_FALSE);if(alen > 0){rtn = (char*)malloc(alen+1); //"\0" memcpy(rtn,ba,alen);rtn[alen]=0;}(*env)->ReleaseByteArrayElements(env,barr,ba,0); // return rtn; }
2.传入参数 int数组jintArray jarray
int length=(*env)->GetArrayLength(env,jarray); int* array=(*env)->GetIntArrayElements(env,jarray,0);