高分求助---jni如何处理java二维数组的传递问题。

NewStarter 2006-03-25 03:12:42
高分求助---jni如何处理java二维数组的传递问题。
...全文
460 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzl32 2006-05-30
  • 打赏
  • 举报
回复
JAVA中没有二级指针的概念,JNI也没提供相应的操作函数.强制转换过程会发生错误.
cambridgeboy 2006-05-30
  • 打赏
  • 举报
回复
JAVA中没有二级指针的概念,JNI也没提供相应的操作函数.强制转换过程会发生错误.

哪该怎么办?
wby8888 2006-05-25
  • 打赏
  • 举报
回复
我也被这个问题难住了,哪位会的给讲一下,最好给出例子代码。
比如一个//输入一个boolean二维数组
java代码:
//输入一个boolean二维数组
public native void setArray(boolean[][] blList);
boolean[][] blList = { {true, false},{true,true},{false,false} };
myclass.setArray(blList);
生成头文件代码:

JNIEXPORT void JNICALL myclass_setArray
(JNIEnv *, jobject, jobjectArray);

二维数组boolean[][] 被转换为jobjectArray,
C文件代码:
JNIEXPORT void JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_setArray
(JNIEnv *env, jobject, jobjectArray ba)
{
jobject pba = (env)->GetObjectArrayElement (ba, 0 );

jsize len = (env)->GetArrayLength(ba);
int i=0;
for( i=0; i < len; i+=1 )
{
printf( "boolean = %s\n", pba );
}
}
wby8888 2006-05-25
  • 打赏
  • 举报
回复
我也被这个问题难住了,哪位会的给讲一下,最好给出例子代码。
比如一个//输入一个boolean二维数组
java代码:
//输入一个boolean二维数组
public native void setArray(boolean[][] blList);
boolean[][] blList = { {true, false},{true,true},{false,false} };
myclass.setArray(blList);
生成头文件代码:

JNIEXPORT void JNICALL myclass_setArray
(JNIEnv *, jobject, jobjectArray);

二维数组boolean[][] 被转换为jobjectArray,
C文件代码:
JNIEXPORT void JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_setArray
(JNIEnv *env, jobject, jobjectArray ba)
{
jobject pba = (env)->GetObjectArrayElement (ba, 0 );

jsize len = (env)->GetArrayLength(ba);
int i=0;
for( i=0; i < len; i+=1 )
{
printf( "boolean = %s\n", pba );
}
}
问题就是怎么把jobjectArray 转换为一个二维的jbooleanArray
或者把jobjectArray 中的元素(jobject pba = (env)->GetObjectArrayElement (ba, 0 );)
转换为一个一维的jbooleanArray
http://www.iplab.cs.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/guide/jni/spec/functions.doc.html#17314
这里边根本没有二维数组的概念,也没有相互转化的方法
救命啊!!
wby8888 2006-05-25
  • 打赏
  • 举报
回复
我也被这个问题难住了,哪位会的给讲一下,最好给出例子代码。
比如一个//输入一个boolean二维数组
java代码:
//输入一个boolean二维数组
public native void setArray(boolean[][] blList);
boolean[][] blList = { {true, false},{true,true},{false,false} };
myclass.setArray(blList);
生成头文件代码:

JNIEXPORT void JNICALL myclass_setArray
(JNIEnv *, jobject, jobjectArray);

二维数组boolean[][] 被转换为jobjectArray,
C文件代码:
JNIEXPORT void JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_setArray
(JNIEnv *env, jobject, jobjectArray ba)
{
jobject pba = (env)->GetObjectArrayElement (ba, 0 );

jsize len = (env)->GetArrayLength(ba);
int i=0;
for( i=0; i < len; i+=1 )
{
printf( "boolean = %s\n", pba );
}
}
问题就是怎么把jobjectArray 转换为一个二维的jbooleanArray
或者把jobjectArray 中的元素(jobject pba = (env)->GetObjectArrayElement (ba, 0 );)
转换为一个一维的jbooleanArray
http://www.iplab.cs.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/guide/jni/spec/functions.doc.html#17314
这里边根本没有二维数组的概念,也没有相互转化的方法
救命啊!!



treeroot 2006-03-29
  • 打赏
  • 举报
回复
一样的吧,能处理一维当然可以处理二维
cleansunshing 2006-03-29
  • 打赏
  • 举报
回复
yuzl32 2006-03-25
  • 打赏
  • 举报
回复
不好处理啊.
tomuno 2006-03-25
  • 打赏
  • 举报
回复
和其他的JIN处理没有什么特别的
只是要看你的数组是由哪种基本类型组成的

http://www.jcwcn.com/html/Java/10_43_37_489.htm

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧