Я пытался вернуть строку ARABIC из вызова JNI.
Метод java выглядит следующим образом:
private native String ataTrans_CheckWord(String lpszWord, String lpszDest, int m_flag, int lpszReserved);
lpszWord: ввод английский
lpszDest: игнорирование
m_flag: Ignore
lpszReserved: Ignore
Теперь, когда я использую javah для создания файла заголовка, я получаю файл заголовка C ++ с этой подписью
JNIEXPORT jstring JNICALL Java_MyClass_ataTrans_1CheckWord (JNIEnv* env, jobject, jstring, jstring, jint , jint)
Теперь в этом коде C ++ яесть операторы, подобные этому
JNIEXPORT jstring JNICALL Java_MyClass_ataTrans_1CheckWord(JNIEnv* env, jobject, jstring jstrInput, jstring, jint , jint)
{
char aa[10];
char* bb;
char** cc;
bb = aa;
cc = &bb;
jstring tempValue;
const char* strCIn = (env)->GetStringUTFChars(jstrInput , &blnIsCopy);
int retVal = pDllataTrans_CheckWord(strCIn, cc, m_flag, lpszReserved);
printf("Orginal Arabic Conversion Index 0: %s \n",cc[0]); //This prints ARABIC properly
tempValue = (env)->NewString((jchar* )cc[0],10); // convert char array to jstring
printf("JSTRING UNICODE Created : %s \n",tempValue); //This prints junk
return tempValue;
}
Я считаю, что содержимое ARABIC находится внутри указателя на указатель «cc».Наконец, в моем Java-коде у меня есть такой вызов
String temp = myclassInstance.ataTrans_CheckWord("ABCDEFG", "",1, 0);
System.out.println("FROM JAVE OUTPUT : "+temp); //Prints Junk
Я просто не могу вернуть какой-то арабский символ в мой код JAVA.Что-то не так я делаю?Я пробовал различные другие альтернативы, такие как
tempValue = env->NewStringUTF("شسيشسيشسيشس");
и возвращал tempValue, но не повезло.Это всегда мусор на стороне JAVA.