我在java中尝试从cpp调用以下方法,
public void callback(short[] sArray) {
Log.e("java", ""+sArray.length);
}
在cpp中我尝试使用此代码来调用java方法:
jclass cls = env->GetObjectClass(obj);
jmethodID mid =
env->GetMethodID(cls, "callback", "([S)V");
if (mid == NULL) {
return 0; // method not found
}
//short *sbuffer;
//sbuffer is filled with some data
env->CallVoidMethod(obj, mid,sbuffer);
但我收到了这个错误:
05-28 18:13:29.850:W / dalvikvm(18423):间接参考无效 0x75402008 in decodeIndirectRef 05-28 18:13:29.850:E / dalvikvm(18423): VM中止05-28 18:13:29.850:A / libc(18423):致命信号11 (SIGSEGV)位于0xdeadd00d(代码= 1),线程18423(ssconverterdemo)
我在这里做错了什么?
答案 0 :(得分:2)
答案 1 :(得分:0)
CallVoidMethod
之类的内容或其他格式为jvalue
的参数。您需要将sbuffer
翻译成jshortArray,然后创建一个表示它的jvalue,然后将jvalue
条目传递给CallVoidMethod
。