java - 如何从jobject中获取jstring? C++

标签 java c++ dll java-native-interface

我正在尝试从我的工作对象中获取一个字符串属性。我找不到任何解决我的问题的方法,谷歌也没有帮助

这是我的 Java 类:

public class HumanBean {

    String name;
    int alter;
    int gehalt;
    double gehaltDouble;

    ....getter and setter...
}

CPP-File - 注释代码是我试图从作业中获取名称字符串的地方

Human createHuman(JNIEnv *env, jclass cls, jobject javaObject) {
    jclass cls = (*env).GetObjectClass(javaObject);

    //jfieldID fidInt = (*env).GetFieldID(cls, "name", "Ljava/lang/String;");
    //jstring name = ??????????????????????

    jfieldID fidInt = (*env).GetFieldID(cls, "alter", "I");
    jint alter = (*env).GetIntField(objarg, fidInt);

    jfieldID fidInt = (*env).GetFieldID(cls, "gehalt", "I");
    jint gehaltInt = (*env).GetIntField(objarg, fidInt);

    jfieldID fidInt = (*env).GetFieldID(cls, "gehaltDouble", "D");
    jdouble gehaltDouble = (*env).GetDoubleField(objarg, fidInt);

    Human newHuman = Human(alter, name, gehaltDouble, gehaltInt);

    return newHuman;
}

最佳答案

我认为这会起作用:

jfieldID fidName = (*env).GetFieldID(cls, "name", "Ljava/lang/String;");
jstring nameString = (jstring)(*env).GetObjectField(cls, fidName);

关于java - 如何从jobject中获取jstring? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57608709/

相关文章:

java - Tomcat - 请求的资源 () 不可用

java - 如何将主单元格放在 StaggeredGridLayout(回收器 View )的顶部?

c++ - MSSQL Server 2012 和来自 C++ dll 的扩展存储过程

java - 从现有外部 .dll 调用方法。例如,来自 kernel32.dll 的 CopyFileA

c++ - 在 MinGW 中导入内联函数

python - Windows 版 PyTables 的 HDF5 ImportError

Java - 极其基本的 JFileChooser 问题

java - 在Java中,验证带有@NonNull注释的属性的对象的最佳方法

c++ - C++ 中的 STL 它是如何工作的

c++ - `boost::local_time::date_time` 来自 `std::string`