この質問は、このような多くの投稿で尋ねられ、回答されています!
しかし、どうすれば C++ から直接呼び出すことができますか? このために、どうすれば JNIEnv* と jobject を取得できますか? これは可能ですか?
この質問は、このような多くの投稿で尋ねられ、回答されています!
しかし、どうすれば C++ から直接呼び出すことができますか? このために、どうすれば JNIEnv* と jobject を取得できますか? これは可能ですか?
取得するには、共有ライブラリのロード中に呼び出されるJNIEnv
グローバル関数を作成できます。JNI_OnLoad
この関数は、JavaVM
ポインタを引数として取得します。これを使用するとJNIEnv
、現在のスレッドを取得できます (または、以前にスレッドがなかった場合は新しいスレッドを作成できますJNIEnv
)。
jobject をどこで取得するかについては、それがインスタンス化する新しいオブジェクトである場合は、JNIEnv::NewObject
メソッドを使用します。それ以外の場合は、Java 側からメソッドを呼び出したいオブジェクトを C/C++ に渡す必要があります。
JNI 仕様の Invocation セクションを読む必要があります。