我有一个使用Java Native Interface的问题。我有以下课程:
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
}
此时我不知道如何处理jobject参数以及如何访问我的元素名称属性?
答案 0 :(得分:1)
这是访问整数类字段的简短示例,有关更多信息,请使用已发布的链接Jorn Vernee。
class MyParms
{
int myVar;
}
读取 myVar 的值的函数:
JNIEXPORT jlong JNICALL Java_TestJNI_sendCommand
(JNIEnv *env, jclass clazz, jint id, jobject param)
{
jfieldID jfid;
jclass jclass;
jint val;
jclass = (*env)->GetObjectClass( env, param );
jfid = (*env)->GetFieldID( env, jclass, "myVar", "I");
val = (*env)->GetIntField( env, param, jfid );
}
编辑:用于访问字符串字段...
env->GetFieldID( clazz, "myVar", "Ljava/lang/String;" );