1

jniでツリーマップをjavaからcに渡したいです。ネイティブ メソッドを呼び出します。

public native int getEuklid(TreeMap<int,short[]> map);
static {
 System.loadLibrary("Euklid");
}

私のcファイルでは、マップ内の要素にアクセスしたいと考えています。どうすればそれができますか。これは私のcファイルのヘッダーです:

JNIEXPORT int JNICALL 
Java_Main_getEuklid (JNIEnv *env, jobject o, jobject o2)

o2 はツリーマップです。Javaのツリーマップのように、そのジョブジェクトをどのように処理できますか?

編集:

私のせいはどこですか?:

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が初めてで、何かをテストしたいので、助けていただければ幸いです。

4

1 に答える 1

2

純粋なCコードだと思います。次のように書く必要があります。

(*env)->GetObjectClass(env, o2)

つまり、RTFM はhttp://en.wikipedia.org/wiki/Java_Native_Interfaceから開始します。

于 2013-04-21T20:57:20.307 に答える