【已解决】jni里如何传数组参数?

public void mAudioTrackWrite(int] dt , int minBufSize)这是Java里的方法定义,我现再想在c中调用这段代码需要传入一个数组,在c里调用的方法是这样写的:
bool re03 = JniHelper::getMethodInfo(info,“org.cocos2dx.cpp/PlayPcm”,“mAudioTrackWrite”,"();
if(re03)
{
info.env->CallVoidMethod(jobj,info.methodID, ib , 10);

}

其中ib是一个int类型的数组,但我到java那边接收出来的数据不对,正确的写法应当是什么?

— Begin quote from ____

引用楼主xuaswq1955于2014-08-31 15:58发表的 jni里如何传数组参数? :
public void mAudioTrackWrite(int] dt , int minBufSize)这是Java里的方法定义,我现再想在c中调用这段代码需要传入一个数组,在c里调用的方法是这样写的:
bool re03 = JniHelper::getMethodInfo(info,“org.cocos2dx.cpp/PlayPcm”,“mAudioTrackWrite”,"();

— End quote

if(re03)
{
    info.env->CallVoidMethod(jobj,info.methodID, ib , 10);

http://www.cocoachina.com/bbs/job.php?action=topost&tid=226483&pid=tpc

ib有没有传值啊?

http://blog.sina.com.cn/s/blog_a000da9d01012h3e.html
看看这个对你有没有帮助

已经弄好了,谢谢各位。

求解决方案。 :6: :6: :6:

数组不能直接传过去,要先转换一下再当作参数传过去

jbyte buf;

buf是要传过去的参数,要进行下面的转换之后再传过去。
jbyteArray jbyteArr; //定义jbyte数组
jbyteArr = info.env->NewByteArray(st);
info.env->SetByteArrayRegion(jbyteArr,0,st,buf);
info.env->CallVoidMethod(jobj,info.methodID, jbyteArr);
info.env->DeleteLocalRef(jbyteArr); //一定要释放内存

st是数组的长度,