我想用 jni 将 TreeMap 从 java 传递到 c。我调用 native 方法:
public native int getEuklid(TreeMap<int,short[]> map);
static {
System.loadLibrary("Euklid");
}
现在在我的 c 文件中,我想访问 map 中的元素。我该怎么做。这是我的 c 文件的 header :
JNIEXPORT int JNICALL
Java_Main_getEuklid (JNIEnv *env, jobject o, jobject o2)
其中 o2 是树状图。我如何处理像 Java 中的 TreeMap 一样的作业?
编辑:
我的错在哪里?:
JNIEXPORT int JNICALL
Java_Main_getEuklid (JNIEnv *env, jobject o, jobject o2){
jclass cls = env->GetObjectClass(o2) ;
jmethodID mGetValue = env->GetMethodID(cls, "keySet","()Ljava/util/Set;");
jobject value = env->CallObjectMethod(o2, mGetValue)
我变成了:
In function ‘Java_Main_getEuklid’:
11: error: request for member ‘GetObjectClass’ in something not a structure or union
12: error: request for member ‘GetMethodID’ in something not a structure or union
13: error: request for member ‘CallObjectMethod’ in something not a structure or union
我真的是 c 语言的新手,我想测试一些东西,所以我希望你能帮助我。
最佳答案
我认为是纯C代码。你应该这样写:
(*env)->GetObjectClass(env, o2)
换句话说,RTFM,从这里开始http://en.wikipedia.org/wiki/Java_Native_Interface .
关于java - JNI 将 TreeMap 从 java 传递到 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133902/