JNI開發:傳遞和返回String型別案例
阿新 • • 發佈:2019-02-12
此篇以案例來講解JNI傳遞String引數並返回String返回值開發,Java函式傳遞“牛八少爺”到C/C++函式,C/C++函式給字串追加“歡迎你!”,並返回追加後的字串到java的函式;
主要程式碼如下:
java的native方法:
/** * JNI傳遞String引數並返回String返回值 * * @param contentStr * @return */ public native String strAppend(String contentStr);
C/C++的函式:
JNIEXPORT jstring JNICALL Java_com_niubashaoye_ndk_jni_JNITools_strAppend( JNIEnv *env, jobject obj, jstring contentStr) { //獲取字串指標,必須使用指標,不能使用char strContent[],因為GetStringUTFChars()返回值為const char *; const char *strContent = env->GetStringUTFChars(contentStr, JNI_FALSE); char str[] = "歡迎你的到來!"; //字串拼接,實現strContent+str1,因為strcat的第一個引數必須為非const型別(可變),所以不能直接使用strcat() //建立一個新的字串指標 char *strTemp = (char *) malloc(strlen(strContent) + strlen(str) + 1); //拷貝常量到字串指標 strcpy(strTemp,strContent); //拼接str1到strTemp strcat(strTemp,str); //返回一個utf的jstring return env->NewStringUTF(strTemp); }