JNIを使用してJavaとCの間でストリームを共有する際に問題があります。私はCからJavaメソッドを呼び出そうとしていますが、GetObjectMethodID
を取得しようとしているときにnosuchmethodfound
の例外が発生しています。例外NOSUCHMETHODERRORがCからJNIを介してCからJavaメソッドを呼び出すとき
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);
Javaコード:
public class myclass extends activity {
private void callbackmethod(int i) {
Log.d("Tag", "In Java code");
}
-------
more code
}
は今、私は常にエラーLjava/lang/NoSuchMethodError;: callbackmethod
を取得しています。
すべてうまく見えますが、コードが機能しません。何が問題ですか?
ヘッダファイルを含める必要がありますか?それは私が今考えることができるものです –
あなたのC、Javaソースを実際のスニペットを反映するように更新すると、解像度がより速くなります。 callabckmethod()のシグネチャを正しく生成しましたか? – TheCottonSilk
そうかもしれません。署名をどのように生成すればよいですか? –