如何使用JNI调用从C返回String的Java方法? [英] How to call Java method which returns String from C using JNI?
本文介绍了如何使用JNI调用从C返回String的Java方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有一种方法可以调用java方法,该方法在C语言中返回String
?
对于Integer
,它的工作方式如下:
Is there a way to call a java method, which returns a String
in C?
For Integer
it works like that:
JNIEXPORT jint JNICALL Java_Client_getAgeC(JNIEnv *env, jobject callingObject, jobject employeeObject) {
jclass employeeClass = (*env)->GetObjectClass(env, employeeObject);
jmethodID midGetAge = (*env)->GetMethodID(env, employeeClass, "getAge", "()I");
int age = (*env)->CallIntMethod(env, employeeObject, midGetAge);
return age;
}
我已经搜索了很长时间,但是对于String
没有任何作用.
最后,我想获得一个char*
预先感谢!
I've searched for a long time but nothing works for String
.
Finally, I want to get a char*
Thanks in advance!
推荐答案
在Java中,定义本机方法
in Java, define the native method
public class Client {
public static native getVorname(int employeeNumber);
}
这是C面:
Employee employees[100];
JNIEXPORT jstring JNICALL Java_Client_getVorname(JNIEnv *env, jclass clientClass, jint employeeNumber) {
if (employeeNumber < 0 || employeeNumber > 100) {
return NULL;
}
Employee* ptr = employees[employeeNumber];
return (*env)->NewStringUTF(env, ptr->vorname);
}
这篇关于如何使用JNI调用从C返回String的Java方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文