Java 如何在JNI中处理类似结构的jobject
我在使用Java本机接口时遇到了一个问题。我上过以下课程:Java 如何在JNI中处理类似结构的jobject,java,c,java-native-interface,Java,C,Java Native Interface,我在使用Java本机接口时遇到了一个问题。我上过以下课程: public class TestJNI { public static native long sendCommand(int id, MyParms param); static { System.loadLibrary("TestNative"); } } MyParams如下所示: public class MyParams { public String lpstrElementName; } 然
public class TestJNI {
public static native long sendCommand(int id, MyParms param);
static {
System.loadLibrary("TestNative");
}
}
MyParams如下所示:
public class MyParams {
public String lpstrElementName;
}
然后我有一个C文件:
#include <jni.h>
#include "TestJNI.h"
JNIEXPORT jlong JNICALL Java_TestJNI_sendCommand
(JNIEnv *env, jclass clazz, jint id, jobject param)
{
// code
}
#包括
#包括“TestJNI.h”
JNIEXPORT jlong JNICALL Java_TestJNI_send命令
(JNIEnv*env,jclass clazz,jint id,jobject参数)
{
//代码
}
此时我不知道如何处理jobject参数以及如何访问我的element name属性?这是访问integer类字段的一个简短示例,有关详细信息,请使用已发布的链接
class MyParms
{
int myVar;
}
用于读取myVar值的函数:
编辑:用于访问字符串字段
env->GetFieldID( clazz, "myVar", "Ljava/lang/String;" );
有关更多信息,请参见和。这个问题相当广泛。我建议您先看一下,我不敢相信它没有标记为dup。。
env->GetFieldID( clazz, "myVar", "Ljava/lang/String;" );