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に変わってくる。これを注意したい。