java内で作成したchar[][]をネイティブメソッドに引数として渡し、cでそれに変更を加えたいと考えているのですが、c内でjobjectarrayをchar[][]に変換する方法がどうしてもわかりません。
まず、一次元配列のコードを書いて試してみました。
Java
1...some codes 2public TestJNI(){ 3 test1darray(); 4} 5 6public void test1darray(){ 7 char[] array= {'1', '2', '3'}; 8 String returnArray=return1DArray(array); 9 System.out.println(returnArray); 10} 11public native String return1DArray(char[] array); 12...some codes
c
1JNIEXPORT jstring JNICALL Java_TestJNI_return1DArray(JNIEnv *env, jobject this, jcharArray jarray){ 2 char array[4]; 3 int i=0; 4 jchar *chars = (*env)->GetCharArrayElements(env, jarray, 0); 5 for(i; i<3; i++){ 6 array[i]=chars[i]; 7 } 8 array[1]='7'; 9 10 char *buf = (char*)malloc(10); 11 strcpy(buf, array); 12 jstring jstrBuf = (*env)->NewStringUTF(env, buf); 13 return jstrBuf; 14}
結果 173
上記のコードで一次元配列は上手くいくのですが、それを二次元配列に変えた場合の処理が分からないのです。
どなたかご教授頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。