問題タブ [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 - JNI がメモリ レベルでどのように機能するか
.so ファイルをロードし、.so ファイルからの結果を出力する Java ファイルがあります。.so ファイルのソース コードがありません。メモリ構造で .so の結果がどのようにロードされ、この Java クラスが .so によって生成された結果を読み取り、それらを出力する場所を誰かが知ることができますか??
java - JNI CコードからCライブラリにvoid **を渡す方法は?
1) image_api.h は次のメソッドを定義します - int process_image(const char *svgData, void **mapData) ;
2) 次に、このメソッドを呼び出して、image_api.so ファイルからロードされる process_image に適切な値を渡す必要があります。
-- JNI C ラッパー コードで void** のインスタンスを作成するための正しいアプローチは何ですか?
3)
////////////
メソッドのシグネチャが一致しないため、process_image の呼び出し中に UnsatisfiedLinkError に直面しています
android - JNI: NewStringUTF 内部例外をキャッチ
私の JNI コードはchar* src
、外部ソースから を受け取り、それをString
usingjstring jStr = env->NewStringUTF(src)
に変換し、結果jStr
を上位の Java レイヤーに渡します。
一部の入力src
値によって、次のランタイム エラーが発生します ( への呼び出し内NewStringUTF
)。
私が使用したメソッドはどれも、このNewStringUTFエラー/例外を「キャッチ」できませんでした:
if (env->ExceptionCheck() == JNI_TRUE)
通話後に配置しNewStringUTF
ます。if (env->ExceptionOccurred())
通話後に配置しNewStringUTF
ます。NewStringUTF
への呼び出しをtry...catch
ブロックで境界付けます。
注:質問は、例外をキャッチすることに焦点を当てています(そして、その影響を制御することによって、アプリケーションをクラッシュさせません)。必ずしもそれを解決することではありません (役に立つかもしれませんが)。
私はAndroid Studio v2.3.3とNDK v15.2(最新のもの)を使用しています。
どうぞよろしくお願いいたします。