使用JNI(Java Native Interface)在C中访问Java对象中的Java对象,需要遵循以下步骤:
以下是一个简单的示例:
public class MyClass {
public String myString = "Hello, world!";
}
javah -jni MyClass
#include <jni.h>
#include "MyClass.h"
JNIEXPORT jstring JNICALL Java_MyClass_getMyString(JNIEnv *env, jobject obj) {
jfieldID myStringField = (*env)->GetFieldID(env, (*env)->GetObjectClass(env, obj), "myString", "Ljava/lang/String;");
jstring myString = (jstring)(*env)->GetObjectField(env, obj, myStringField);
return myString;
}
gcc -shared -o libmyclass.so -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux MyClass.c
System.loadLibrary("myclass");
MyClass myObj = new MyClass();
String myString = getMyString(myObj);
在这个示例中,我们创建了一个名为MyClass的Java对象,其中包含一个名为myString的字符串。然后,我们使用JNI在C代码中访问该对象的myString字段,并将其返回给Java代码。
腾讯云湖存储专题直播
腾讯云存储专题直播
腾讯云数据湖专题直播
Game Tech
Game Tech
Game Tech
开箱吧腾讯云
企业创新在线学堂
Elastic 中国开发者大会
Techo Day
领取专属 10元无门槛券
手把手带您无忧上云