2011-10-29 10 views
20

のための関数シグニチャに複数のパラメータを渡す:JNI:私は、次の署名を持っている(Cから)Javaで関数を実行しようとしています関連項目GetMethodID

public void execute(int x, int y, int action); 

私の問題は、GetMethodIDメソッドに関数のシグネチャを定義することです:

env->GetMethodID(hostClass, "execute", "(I;I;I;)V"); 

私が取得ミリアンペアの問題がある:

W/dalvikvm(1849): Bogus method descriptor: (I;I;I;)V 
W/dalvikvm(1849): Bogus method descriptor: (I;I;I;)V 
D/dalvikvm(1849): GetMethodID: method not found: Lcom/device/client/HostConnection;.execute:(I;I;I;)V 

私はホわかりませんwを使用してGetMethodIDにメソッドシグネチャを指定します(パラメータとして3つの整数用)。私は人々が ";" StringクラスとFileクラスの他のポストではパラメータを区切りますが、整数のようなプリミティブはありません。

これを行う正しい方法は何ですか?

ありがとうございます。

答えて

48

このfileによれば、(III)Vの署名を使用する必要があります。 完全修飾クラスを指定する必要がある場合にのみ、Ljava/lang/String;のように ';'を使用する必要があります。

+0

ありがとうございました!あなたは私の問題を解決するのを手伝った、ありがとう! – Jary

+0

これはJNIのあらゆる問題を解決するための本当に便利なリンクです。ありがとうございます! –

+0

の場合はpublic void execute(String x、int y); ? (Ljava/lang/String; I)V?エラー.... – zszen

関連する問題