Bir Tamsayı nesnesini döndüren java yöntemine erişmek için bir JNI yöntemim var. İlkel int türünü döndürmek istemiyorum çünkü bu kod, Genel nesneler işlemek için değiştirilecek. Aşağıda sahip olduğum şey. Geçtiğim Tamsayı'nın değerini alamıyorum. C++ tarafında çıkışıJNI Java Nesnesine nasıl erişilir (Tamsayı)
ben C++ sonunda geçmesine Integer nesnesi gerçek değerini nasıl alabilirimvalue = 0x4016f3d0
gibi bir şey?
LütfenYardım edin.
sayesinde
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 (ana sınıfı)
public class Test {
public static void main(String[] args){
Integer i = new Integer(1);
Data d = new Data(i);
GenericPeer.print(d);
}
}
hi, kod üzerinde .. – RAJESH
Neden 'Ljava/lang/tamsayı benim için çalışmıyor;' değil, 'Ijava/lang/tamsayı;'? –