Javaで用意した配列にJNIで値を格納して返す
Java
で用意した配列にJNI(Native)
側で値を設定する方法です。
Javaで用意したプリミティブ型配列にJNIで値を設定
sample(JNIEnv *jenv, jobject jobj, jintArray jvalues)
{
// 配列数取得
jsize length = jenv->GetArrayLength(jvalues);
// 配列への値設定
jint * intArray = jenv->GetIntArrayElements(jvalues, NULL);
intArray[0] = 10;
jenv->ReleaseIntArrayElements(jvalues, intArray, 0);
}
Javaで用意した文字列配列にJNIで値を設定
sample(JNIEnv *jenv, jobject jobj, jobjectArray jvalues)
{
const char *p_txt1 = "abcd";
const char *p_txt2 = "トム to ジェリー";
const char *p_txt3 = "efgh";
// 配列数取得
jsize length = jenv->GetArrayLength(jvalues);
jstring jstr1 = jenv->NewStringUTF(p_txt1);
jenv->SetObjectArrayElement(jvalues, 0, jstr1);
jstring jstr2 = jenv->NewStringUTF(p_txt2);
jenv->SetObjectArrayElement(jvalues, 1, jstr2);
jstring jstr3 = jenv->NewStringUTF(p_txt3);
jenv->SetObjectArrayElement(jvalues, 2, jstr3);
}
上記サンプルのソースファイルはUTF-8で保存です。