問題タブ [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.
java - このjavaメソッドの呼び出しの何が問題になっていますか?
コードからJavaメソッドを呼び出そうとしています。Cコードは、キーの押下をリッスンし、Javaメソッドを呼び出して、どのキーが押されたかEscape
を通知します。以下は、これで役割を果たすスニペットです。Shift
Ctrl
Cスニペット:
Javaスニペット:
プログラムを実行してEscape
キーを押すと、コンソールに次のように表示されます。
Java関数を間違った方法で呼び出していることは知っていますが、どこが間違っているのかわかりません。Escape
出力からのように、キーを押して予期しないエラーが発生した場合を満たしています。
編集:
mavroprovatoによる回答の後、私はまだ同じエラーを受け取ります。
私はこのように編集しました:
編集:
COMPLETECODEバージョン1
COMPLETECODEバージョン2
java - Windows での JNI および C 入門
私はJavaの学習が初めてで、初めてJNIを始めたいと思っています。そして、私は Cygwin を使用しており、次のように .java (Helloworld.java) 拡張子を持つファイルを作成しました。
次に、コマンド ライン ( javac Helloworld.java
) を使用してファイルをコンパイルし、コマンドを使用してネイティブ ヘッダー ファイルを作成します。javah –jni Helloworld
次に、次のように C ファイルを作成して実装します。
その後、コマンドを実行している間
Cygwin のコマンド プロンプト ラインにメッセージを表示する
実行方法とファイルを実行するためのパスを設定する手順は? どなたか助けてください。ありがとう。
java - Java JNI - jintArray を返す際の EXCEPTION_ACCESS_VIOLATION
このコードでは本当に奇妙なことが起こります
メソッドは実際に Java で処理できる結果を返します。
printArray は単純なものです
出力は次のとおりです
ご覧のとおり、結果が返されますが、その直後に JM がクラッシュし、それ以上の行は実行されません。私は間違いなく助けに感謝します!ありがとうございました!
編集: rtlsdr_get_tuner_gains の呼び出しを削除し、代わりにゲイン配列を手動で初期化すると、エラーは発生しません。このメソッドは dll 内にあるため、どうにかして JNI をクラッシュさせないようにすることはできますか?
java-native-interface - 複数の引数を持つ JNI メソッド?
私はJNIが初めてで、以下の関数に3つの整数を渡したいと思っていました
私が間違っている場合は修正してください
(! getStaticMethodInfo(methodInfo, "pauseEffect", "(I)V")) の場合、この行には何が表示されますか
(I;I;I)V または単に (III)V
関数が void pauseEffectJNI(unsigned int nSoundId, unsigned int number1, unsigned int number2) の場合 ??
基本的に、複数の整数を渡したい場合はどうなるか知りたい
助けてくれてありがとう...これが私が作った関数です...間違っている場合は訂正してください
java - Android C/C++ ネイティブ コール Java API
Android C/C++ ネイティブが Java API を呼び出す例はたくさんあります。ただし、私が読んだこれらの例はすべて、Android Java API が最初にネイティブを呼び出し、次にネイティブが渡された JNI-ENV を使用して他の Java API を呼び出すものです。
渡された JNI-ENV がなければ、C/C++ はどのようにしてそれを取得できますか? C/C++ ネイティブが JNI-ENV なしで Java API を呼び出すことは可能ですか?
可能であれば、その例またはリンクを教えてください。
ありがとう!
xamarin.android - monodroid アプリケーション内からの JNIEnv 呼び出し
これは、モノドロイド アプリケーションで JNIEnv を介してアクセスしている Java クラスです。
次のステートメントでクラスをインスタンス化できます。
しかし、getSelctd()メソッドにアクセスするオブジェクトを作成しようとすると:
NoSuchMethodExist 例外がスローされます...正しい方法で行っているかどうか、ここで何が欠けているか教えてください...
java - jniのクラスからchar配列を取得する方法
クラスのオブジェクトをjavaからに渡しますJNI
。を使用してクラスを取得しましたGetObjectClass
。
を使用して、クラス内の整数の値を取得できます
とを使用して値を取得できString
ます。GetObjectField
GetStringUTFChars
どうすればクラスでChar Array
プレゼントをもらうことができますか?Java
JNI
c - JNIEnv 環境へのグローバル参照を維持する
グローバルに保存しJNIEnv
ているので、後で静的 Java メソッドを呼び出すことができます。しかし、へのグローバル ポインタを格納するJNIEnv
必要があるか、他の Java オブジェクトと同じように格納する必要があるか、それともこれを必要としない特殊なケースか。
編集
私はここで少しばかげています. を使用するすべてのメソッドはglobalEnvPointer
init 内で呼び出されます. myinit
は実際には私のc
プログラムのmain
メソッドであり、プログラムの最後まで戻りません. また、c プログラムで他のスレッドを使用していません。これにより、答えが簡単になると思います。
java - ネイティブJNIからJavaクラスを呼び出してデータを宣言するAndroidのメモリ管理(画像変換用)
データのブロックを解凍したいAndroid用のネイティブコードを書いています。ネイティブ JNI 関数から Java メソッドを呼び出しています。この Java メソッドは BitmapFactory を呼び出し、次のようにメモリを割り当てようとします。
プログラムがクラッシュしたり、停止したりしたように見えて、「一時停止中のスピン」が発生し、その後、VM がシャットダウンする前に logcat に多くのメッセージが表示されます。
詳細に入る前に全体像を示すために、圧縮された画像のバイト配列を圧縮されていwidth*height*bpp
ない画像に変換して、ネイティブ コードに戻そうとしています。Android Java BitmapFactory を使用して解凍を実行しようとしていますが、正常に動作しているようです。圧縮されたバイト ブロックは、以前にネイティブ コードに読み込まれた JPG または PNG 画像のものです (私のシステムではディスクから読み取れません)。
シーケンスは少し複雑です。何が関連するのかわからないので、すべて言います。
class MyRenderer implements GLSurfaceView.Renderer
メソッドは、 クラスで定義されているonSurfaceCreated
ネイティブを呼び出します。init()
MyRenderer
ネイティブ コード内では、次の関数が呼び出されます。
char glprog_init(int dummy_variable)
次に、それ自体がネイティブ wrapper_uncompress_image_by_os(overlay_compressed_data,overlay_compressed_data_len,... を呼び出す別のネイティブ関数を呼び出します... ネイティブ関数は次のとおりです。
nativeを呼び出したconvertImageFromNative()
のと同じ Java クラスのメソッドを呼び出します。 MyRenderer
init()
}
コメントを外すwriteFile()
と、すべてのデータが SD カードに正常に書き込まれます。bytes2bitmap()
私が問題を抱えているのは内部です。
このbytes2bitmap()
クラスは「通常の」Java から呼び出すことができますが、ネイティブから呼び出される this から呼び出すと、そのint[] pixels = new int[width * height];
行でクラッシュします。
最後に、クラッシュを引き起こすコードは次のとおりです。
圧縮されていないデータを適切にネイティブ コードに戻す部分にはまだ到達していませんが、最初にこれに対処する必要があると考えました。
ネイティブコードで配列を作成しint[]
て渡すことができましたが、問題は、圧縮されていない画像のサイズがわからないことです。
前もってありがとう、マーク
c# - プライベート メソッドを呼び出すための Java リフレクション用 Monodroid JNI
Monodroid プロジェクトでは、クラスでプライベート メソッドを呼び出せるようにする必要があります。関連する質問 の回答から、これはリフレクションを介してJavaで可能であるようです:
Monodroid からこのコードを使用する必要があります。残念ながら、java.lang.reflect
モノドロイドでは利用できません。ただし、Monodroid プロジェクトから JNI を使用してこのコードを実行できることが提案されています。Xamarinのドキュメントには、JAR 全体をバインドしなくてもインライン JNI が可能であると記載されています。残念ながら、これ以上のドキュメントでは、この件についてこれ以上何も述べていません。さらに、JNIEnv に関するドキュメントは空白です。
が必要なようですがJNIEnv.CallVoidMethod()
、やり方がわかりません。例や詳細なドキュメントが見つかりません。
Monodroid プロジェクトで使用java.lang.reflect
したり、他の方法でプライベート メソッド.createPipe
を呼び出したりするにはどうすればよいParcelFileDescriptor
ですか?