問題タブ [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 投票する
3 に答える
1644 参照

java - このjavaメソッドの呼び出しの何が問題になっていますか?

コードからJavaメソッドを呼び出そうとしています。Cコードは、キーの押下をリッスンし、Javaメソッドを呼び出して、どのキーが押されたかEscapeを通知します。以下は、これで役割を果たすスニペットです。ShiftCtrl

Cスニペット:

Javaスニペット:

プログラムを実行してEscapeキーを押すと、コンソールに次のように表示されます。

Java関数を間違った方法で呼び出していることは知っていますが、どこが間違っているのかわかりません。Escape出力からのように、キーを押して予期しないエラーが発生した場合を満たしています。

ログファイルへのリンク

編集:

mavroprovatoによる回答の後、私はまだ同じエラーを受け取ります。

私はこのように編集しました:

編集:

COMPLETECODEバージョン1

COMPLETECODEバージョン2

0 投票する
4 に答える
9131 参照

java - Windows での JNI および C 入門

私はJavaの学習が初めてで、初めてJNIを始めたいと思っています。そして、私は Cygwin を使用しており、次のように .java (Helloworld.java) 拡張子を持つファイルを作成しました。

次に、コマンド ライン ( javac Helloworld.java) を使用してファイルをコンパイルし、コマンドを使用してネイティブ ヘッダー ファイルを作成します。javah –jni Helloworld 次に、次のように C ファイルを作成して実装します。

その後、コマンドを実行している間

Cygwin のコマンド プロンプト ラインにメッセージを表示する

実行方法とファイルを実行するためのパスを設定する手順は? どなたか助けてください。ありがとう。

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

java - Java JNI - jintArray を返す際の EXCEPTION_ACCESS_VIOLATION

このコードでは本当に奇妙なことが起こります

メソッドは実際に Java で処理できる結果を返します。

printArray は単純なものです

出力は次のとおりです

ご覧のとおり、結果が返されますが、その直後に JM がクラッシュし、それ以上の行は実行されません。私は間違いなく助けに感謝します!ありがとうございました!

編集: rtlsdr_get_tuner_gains の呼び出しを削除し、代わりにゲイン配列を手動で初期化すると、エラーは発生しません。このメソッドは dll 内にあるため、どうにかして JNI をクラッシュさせないようにすることはできますか?

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

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) の場合 ??

基本的に、複数の整数を渡したい場合はどうなるか知りたい

助けてくれてありがとう...これが私が作った関数です...間違っている場合は訂正してください

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

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 を呼び出すことは可能ですか?

可能であれば、その例またはリンクを教えてください。

ありがとう!

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

xamarin.android - monodroid アプリケーション内からの JNIEnv 呼び出し

これは、モノドロイド アプリケーションで JNIEnv を介してアクセスしている Java クラスです。

次のステートメントでクラスをインスタンス化できます。

しかし、getSelctd()メソッドにアクセスするオブジェクトを作成しようとすると:

NoSuchMethodExist 例外がスローされます...正しい方法で行っているかどうか、ここで何が欠けているか教えてください...

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

java - jniのクラスからchar配列を取得する方法

クラスのオブジェクトをjavaからに渡しますJNI。を使用してクラスを取得しましたGetObjectClass

を使用して、クラス内の整数の値を取得できます

とを使用して値を取得できStringます。GetObjectFieldGetStringUTFChars

どうすればクラスでChar Arrayプレゼントをもらうことができますか?JavaJNI

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

c - JNIEnv 環境へのグローバル参照を維持する

グローバルに保存しJNIEnvているので、後で静的 Java メソッドを呼び出すことができます。しかし、へのグローバル ポインタを格納するJNIEnv必要があるか、他の Java オブジェクトと同じように格納する必要があるか、それともこれを必要としない特殊なケースか。

編集

私はここで少しばかげています. を使用するすべてのメソッドはglobalEnvPointerinit 内で呼び出されます. myinitは実際には私のcプログラムのmainメソッドであり、プログラムの最後まで戻りません. また、c プログラムで他のスレッドを使用していません。これにより、答えが簡単になると思います。

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

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 クラスのメソッドを呼び出します。 MyRendererinit()

}

コメントを外すwriteFile()と、すべてのデータが SD カードに正常に書き込まれます。bytes2bitmap()私が問題を抱えているのは内部です。

このbytes2bitmap()クラスは「通常の」Java から呼び出すことができますが、ネイティブから呼び出される this から呼び出すと、そのint[] pixels = new int[width * height];行でクラッシュします。

最後に、クラッシュを引き起こすコードは次のとおりです。

圧縮されていないデータを適切にネイティブ コードに戻す部分にはまだ到達していませんが、最初にこれに対処する必要があると考えました。

ネイティブコードで配列を作成しint[]て渡すことができましたが、問題は、圧縮されていない画像のサイズがわからないことです。

前もってありがとう、マーク

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

c# - プライベート メソッドを呼び出すための Java リフレクション用 Monodroid JNI

Monodroid プロジェクトでは、クラスでプライベート メソッドを呼び出せるようにする必要があります。関連する質問 の回答から、これはリフレクションを介してJavaで可能であるようです:

Monodroid からこのコードを使用する必要があります。残念ながら、java.lang.reflectモノドロイドでは利用できません。ただし、Monodroid プロジェクトから JNI を使用してこのコードを実行できることが提案されています。Xamarinのドキュメントには、JAR 全体をバインドしなくてもインライン JNI が可能であると記載されています。残念ながら、これ以上のドキュメントでは、この件についてこれ以上何も述べていません。さらに、JNIEnv に関するドキュメントは空白です。

が必要なようですがJNIEnv.CallVoidMethod()、やり方がわかりません。例や詳細なドキュメントが見つかりません。

Monodroid プロジェクトで使用java.lang.reflectしたり、他の方法でプライベート メソッド.createPipeを呼び出したりするにはどうすればよいParcelFileDescriptorですか?