Ani*_*ole 0 java java-native-interface android android-ndk
我在使用JNI在Java和C之间共享流时遇到问题.我试图从C调用Java方法,但是nosuchmethodfound当我想要获取时,我得到了一个异常GetObjectMethodID.
C代码:
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID aMethodID = (*env)->GetMethodID(env, cls, "callbackmethod", "(I)V");
if (aMethodID == 0) {
log("Unable to get methodID"); //Always getting aMethodID as 0
}
int myvar = 7;
(*env)->CallVoidMethod(env, obj, aMethodID, myvar);
Run Code Online (Sandbox Code Playgroud)
Java代码:
public class myclass extends activity {
private void callbackmethod(int i) {
Log.d("Tag", "In Java code");
}
-------
more code
}
Run Code Online (Sandbox Code Playgroud)
现在我总是收到错误Ljava/lang/NoSuchMethodError;: callbackmethod.
一切都很好,但我的代码不起作用.问题是什么?
JNI方法是否是静态的?如果是这样,它的第二个参数是类,而不是this当前对象的指针.
此外,当前类或其基础中的方法是否有问题?从你拼写activity全部小写的事实来看,这不是你实际代码的复制/粘贴,而是重写.在实际代码中查找错误更容易.