如何使用JNI调用从C返回String的Java方法?

时间:2016-10-12 18:26:38

标签: c string java-native-interface

有没有办法调用java方法,它在C中返回StringInteger就像那样:

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* 提前谢谢!

2 个答案:

答案 0 :(得分:0)

以下是调用返回字符串的方法的JNI代码示例。希望这会有所帮助。

{{1}}

答案 1 :(得分:0)

在Java中,定义本机方法

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);
}