0

この質問は、このような多くの投稿で尋ねられ、回答されています!

しかし、どうすれば C++ から直接呼び出すことができますか? このために、どうすれば JNIEnv* と jobject を取得できますか? これは可能ですか?

4

2 に答える 2

1

取得するには、共有ライブラリのロード中に呼び出されるJNIEnvグローバル関数を作成できます。JNI_OnLoadこの関数は、JavaVMポインタを引数として取得します。これを使用するとJNIEnv、現在のスレッドを取得できます (または、以前にスレッドがなかった場合は新しいスレッドを作成できますJNIEnv)。

jobject をどこで取得するかについては、それがインスタンス化する新しいオブジェクトである場合は、JNIEnv::NewObjectメソッドを使用します。それ以外の場合は、Java 側からメソッドを呼び出したいオブジェクトを C/C++ に渡す必要があります。

于 2012-06-13T06:07:41.293 に答える
0

JNI 仕様の Invocation セクションを読む必要があります。

于 2012-06-13T21:58:17.287 に答える