我想在JNI的帮助下将整数值传递给学生类构造函数,但可能无法获得预期输出我的错误请任何人都可以参考此代码并指导我。
Student.java
public class Student {
private int age;
public Student(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
StudentActivity.java
public class StudentActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
protected Student student;
public static native Student getStudentInfo();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_student);
student = getStudentInfo();
Log.d("TAG_DATA",String.valueOf(student.getAge()));
}
}
student.cpp
JNIEXPORT jobject JNICALL
Java_com_kishandonga_jni_1expriment_Design_StudentActivity_getStudentInfo(JNIEnv *env,
jclass type) {
jclass fStudentClass = env->FindClass("com/kishandonga/jni_expriment/Model/Student");
jmethodID constructor = env->GetMethodID(fStudentClass, "<init>", "(I)V");
jobject nStdClass = env->NewObject(fStudentClass, constructor, 13);
env->CallVoidMethod(nStdClass, constructor);
return nStdClass;
}
答案 0 :(得分:2)
试试这个
<强> student.cpp 强>
JNIEXPORT jobject JNICALL
Java_com_kishandonga_jni_1expriment_Design_StudentActivity_getStudentInfo(JNIEnv *env,
jclass type) {
jclass fStudentClass = env->FindClass("com/kishandonga/jni_expriment/Model/Student");
jmethodID constructor = env->GetMethodID(fStudentClass, "<init>", "(I)V");
jobject nStdClass = env->NewObject(fStudentClass, constructor, 13);
// remove this
// env->CallVoidMethod(nStdClass, constructor);
return nStdClass;
}