如何使用JNI调用从C返回String的Java方法? [英] How to call Java method which returns String from C using JNI?

查看:96
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆