相关疑难解决方法(0)

使用JNI在C中访问Java对象中的Java对象

我对JNI比较陌生,并且已经解决了使用JNI在Java对象中弄乱整数和数组的基础知识.现在我正在尝试修改/访问Java对象中的Java对象.

我一直在互联网和Stack Overflow上搜索,还没有找到如何做到这一点.

这是一个例子.

在Java中:

public class ObjectOne
{
    private byte[] buff;
    ...
    ...
}

public class ObjectTwo
{
    private ObjectOne obj;
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

在JNI中,如何通过ObjectTwo从ObjectOne访问"buff"?我试过这样的事......

JNIEXPORT void JNICALL Java_accessBuffThroughObjectTwo(JNIEnv *env, jobject obj, jobject objectTwo)
{
    jclass clazz;
    jclass bufferClazz;
    jobject bufferJObject;

    clazz = (*env)->GetObjectClass(env, objectTwo);
    fid = (*env)->GetFieldID(env, clazz, "obj", "Ljava/lang/Object;");
    bufferJObject = (*env)->GetObjectField(env, javascsicommand, fid);
    bufferClazz = (*env)->GetObjectClass(env, bufferJObject);  <-- Fails here for Access Violation
    fid = (*env)->GetFieldID(env, bufferClazz, "buff", "[B");
}
Run Code Online (Sandbox Code Playgroud)

对我做错的任何帮助?

c c++ java java-native-interface

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1

java ×1

java-native-interface ×1