(1) First convert the string passed by Java into an array of type C char, the code is as follows
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); "The"
memcpy (Rtn,ba,alen);
rtn[alen]=0;
}
(*env)->releasebytearrayelements (env,barr,ba,0); //
return RTN;
}
(2) string concatenation in C language, return to Java, the code is as follows
char * ext = "Hello from c";
char * revert = JSTRING2CSTR (ENV,STR);
strcat (Revert,ext);
Return (*env)->newstringutf (Env,revert);
The JNI Foundation passes the string to C, which is stitched in C and returned to Java