J'ai une méthode JNI pour accéder à la méthode java qui renvoie un objet Integer. Je ne veux pas renvoyer le type int primitif car ce code sera modifié pour gérer les objets génériques. Ce qui suit est ce que j'ai. Je ne suis pas en mesure d'obtenir la valeur de l'entier que je transmets. La sortie à côté de C est quelque chose commeJNI comment accéder à l'objet Java (entier)
value = 0x4016f3d0
Comment puis-je obtenir la valeur réelle de l'objet entier que je passe à C++ fin?
Aidez-nous s'il vous plaît.
Merci,
-H
GenericPeer.cpp
JNIEXPORT void JNICALL Java_GenericPeer_print (JNIEnv *jenv, jclass jcls, jobject data){
jclass peerCls = jenv->GetObjectClass(data);
jmethodID mGetValue = jenv->GetMethodID(peerCls, "getValue","()Ljava/lang/Integer;");
if(mGetValue == NULL){
return (-1);
}
jobject value = jenv->CallObjectMethod(data, mGetValue);
cout<<"value = "<<value<<endl;
}
GenericPeer.java
public class GenericPeer {
public static native void print(Data d);
static {
System.load("/home/usr/workspace/GenericJni/src/libGenericJni.so");
}
}
Data.j ava
public class Data {
private Integer value;
pubilc Data(Integer v){
this.value = v;
}
public Integer getValue() { return value; }
public void setValue(Integer value) {
this.value = value;
}
}
Test.java (classe principale)
public class Test {
public static void main(String[] args){
Integer i = new Integer(1);
Data d = new Data(i);
GenericPeer.print(d);
}
}
salut, au-dessus du code ne fonctionne pas pour moi .. Pourquoi – RAJESH
'Ljava/lang/entier;', et non 'Ijava/lang/entier;'? –