私が開発していた間に、誤って関数にパラメータを追加していませんでした。しかし、ネイティブjni呼び出しの同じ関数にはパラメータがあります。しかし、まだそれはjavaから正確なメソッドを呼び出しています。方法はJNIで識別されていますか?
JavaクラスDemo.java。
package jniexamples.rmi;
class Demo {
private native void jBoolean();
public static void main(String[] args) {
new Demo().jBoolean();
}
static {
System.load("jnidemo.so");
}
}
Demo.c
#include <jni.h>
#include <stdio.h>
JNIEXPORT void JNICALL
Java_jniexamples_rmi_Demo_jBoolean(JNIEnv *env, jobject ob,jint dtype)
{
printf("first demo %d" , dtype);
return;
}
結果:最初のデモ-1579007728
私は混乱してメソッドのシグネチャが異なっていても、それはどのようにJNIメソッドを呼び出しているのですか?
は、不足しているパラメータの値が未定義になっているようです。 – Thilo
メソッドはその名前で識別されます。署名が一致していることを確認する必要があります。 – Thilo
IIRRの場合、適切な関数プロトタイプ –