問題タブ [jnienv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
276 参照

android - Android NDK、およびアクティビティ クラスの外に関数を配置する

記事で言及: http://androidcookbook.com/Recipe.seam?recipeId=77

は:

" Activity クラスで、メソッドの外側:

"

デザイナーがすべての NDK アクション (ライブラリのロード、関数の定義) をアクティビティの外に配置したい場合、彼女/彼はできますか?
新しいクラスを作成してアクティビティにインポートすることで、この質問を解決しようとしました。ロード ライブラリをクラス コンストラクターに配置し、メソッド定義を他のクラスに配置しました。アクティビティライブラリをロードしているように見えますが、関数が見つからないというエラーでクラッシュします

編集して詳細を追加: これをもう一度試みましたが、loadLibrary 関数をアクティビティに戻しました。同じクラッシュ レポートが表示されます: java.lang.UnsatisfiedLinkError: Native method not found:

0 投票する
1 に答える
139 参照

android - アプリケーションがフォアグラウンドになったときに JNI メソッドが呼び出されない

アプリケーションで JNI を使用しています... アプリケーションが起動すると正常に動作し、JNI ログが印刷されます..しかし、アプリケーションがバックグラウンドになり、他のアプリケーションを使用した後にフォアグラウンドになると、JNI ログが印刷されず、メソッドが呼び出されません..

誰かが私に解決策を提案できますか?

前もって感謝します..

0 投票する
1 に答える
2168 参照

java-native-interface - JNI から大きなオブジェクト配列を返しますか?

ドキュメントによると

jint EnsureLocalCapacity(JNIEnv *env, jint capacity);

現在のスレッドで少なくとも指定された数のローカル参照を作成できるようにします。成功した場合は 0 を返します。それ以外の場合は負の数を返し、OutOfMemoryError をスローします。

VM は、ネイティブ メソッドに入る前に、少なくとも 16 個のローカル参照を作成できることを自動的に確認します。

下位互換性のために、VM は確保された容量を超えてローカル参照を割り当てます。(デバッグのサポートとして、VM は、作成されているローカル参照が多すぎることをユーザーに警告する場合があります。JDK では、プログラマーは -verbose:jni コマンド ライン オプションを指定して、これらのメッセージを有効にすることができます。)確保された容量を超えてローカル参照を作成することはできません。

作成できる Local Reference の数に制限があるようです。

そして、大きなオブジェクト配列を返す次のコードがあります。これにより、多くのローカル参照が作成されます。これは簡単に限界に達してしまうということですか?-- ドキュメントには、デフォルトで 16 と記載されています。

制限を延長するには?

0 投票する
0 に答える
38 参照

java - JNI プログラムでの UnsatisfiedLinkError

私は JNI を使って作業しています。

Javaプログラムを実行すると表示されます

これを解決する方法がわかりませんか?

0 投票する
2 に答える
709 参照

java - パラメーター Map を使用して Java 関数を呼び出すc++ から std::map を使用

C ++を使用しているときに、パラメーターとして受け取るJava関数を呼び出すにはどうすればよいですか。パラメータがintなどの単純な型である場合にC ++からJava関数を呼び出す方法は知っていますが、Mapを呼び出す方法は知っていますMap<String, String>C++std::map<std::string, std::string>

これを達成するためのトリックはありますか?

2 つを分離して使用しjobjectArrays of jstring、Java 関数のマップにインデックスで接着するには、またはより洗練されたソリューションがありますか?