問題タブ [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.
android - Android NDK、およびアクティビティ クラスの外に関数を配置する
記事で言及: http://androidcookbook.com/Recipe.seam?recipeId=77
は:
" Activity クラスで、メソッドの外側:
"
デザイナーがすべての NDK アクション (ライブラリのロード、関数の定義) をアクティビティの外に配置したい場合、彼女/彼はできますか?
新しいクラスを作成してアクティビティにインポートすることで、この質問を解決しようとしました。ロード ライブラリをクラス コンストラクターに配置し、メソッド定義を他のクラスに配置しました。アクティビティはライブラリをロードしているように見えますが、関数が見つからないというエラーでクラッシュします
編集して詳細を追加: これをもう一度試みましたが、loadLibrary 関数をアクティビティに戻しました。同じクラッシュ レポートが表示されます: java.lang.UnsatisfiedLinkError: Native method not found:
android - アプリケーションがフォアグラウンドになったときに JNI メソッドが呼び出されない
アプリケーションで JNI を使用しています... アプリケーションが起動すると正常に動作し、JNI ログが印刷されます..しかし、アプリケーションがバックグラウンドになり、他のアプリケーションを使用した後にフォアグラウンドになると、JNI ログが印刷されず、メソッドが呼び出されません..
誰かが私に解決策を提案できますか?
前もって感謝します..
java-native-interface - JNI から大きなオブジェクト配列を返しますか?
ドキュメントによると
jint EnsureLocalCapacity(JNIEnv *env, jint capacity);
現在のスレッドで少なくとも指定された数のローカル参照を作成できるようにします。成功した場合は 0 を返します。それ以外の場合は負の数を返し、OutOfMemoryError をスローします。
VM は、ネイティブ メソッドに入る前に、少なくとも 16 個のローカル参照を作成できることを自動的に確認します。
下位互換性のために、VM は確保された容量を超えてローカル参照を割り当てます。(デバッグのサポートとして、VM は、作成されているローカル参照が多すぎることをユーザーに警告する場合があります。JDK では、プログラマーは -verbose:jni コマンド ライン オプションを指定して、これらのメッセージを有効にすることができます。)確保された容量を超えてローカル参照を作成することはできません。
作成できる Local Reference の数に制限があるようです。
そして、大きなオブジェクト配列を返す次のコードがあります。これにより、多くのローカル参照が作成されます。これは簡単に限界に達してしまうということですか?-- ドキュメントには、デフォルトで 16 と記載されています。
制限を延長するには?
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 関数のマップにインデックスで接着するには、またはより洗練されたソリューションがありますか?