親牛の開発日記

ぼけ防止するため、開発メモを残そう

JAVAのNative開発(JNI)もろもろ注意

■2番目の引数って何?

Javaから呼び出されるjni関数は、だいたい以下の形式になっている

jxxxxx Java_package_name_クラス名_メソッド名(JEnv*, j???, メソッド引数)

中には2番目の引数(j???)は、Java側のメソッドの宣言によって型が変わってくる

 

private native String A();

jobject Java_package_name_クラス名_A(JEnv*, jobject..)になる

しかし、Aメソッドが「static」で宣言された場合

private static native String A();

jobject Java_package_name_クラス名_A(JEnv*, jclass..)になる

つまり、Java側のメソッドがstatic/非staticによって、2番目の引数は

jobject/jclassに変わってくる。これを注意したい。