問題タブ [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 に答える
221 参照

java - DLL にアクセスすると JNI がクラッシュする

私はJavaに非常に慣れていませんが、C++ dllをJavaにロードすることにしました。Java側で何をしようとしているのか説明させてください..

Java では、ネイティブ関数 GetGLBuffer を作成しています。パラメーターは、ByteArray へのポインターであると想定されています。Javaにはポインターがないので、ちょっと迷っています。

C++ では、GetGLBuffer(byte* &Buffer); と同等です。バッファは関数内からいっぱいになります。

Java では GetGLBuffer(ByteBuffer Buffer); を実行しました。バッファーは C++ DLL から満たされ、Java が JFrame に描画できるように Java に送り返されます。代わりに、DLL にアクセスするとすぐにクラッシュします。私が間違っていることを説明したい人はいますか?


C++ 側:

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

java - 文字列を c jni から java に設定します

jni から Java クラスに文字列を設定するのに問題があります。jni を (c で) 書きました。jni から Java に文字列を設定したいです。

しかし、このメソッドは機能していません。クラスから文字列を取得できませんが、Java クラスから他のすべてのメソッドにアクセスできます。jni から Java に文字列を設定できません。これを行う方法はありますか。これは私のクラスです。

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

xamarin.android - Mono で JNI を使用して Java ライブラリにアクセスする

Android 用の mono を使用してアプリを開発しており、プッシュ通知を機能させるのに苦労しています。Urban Airship を使用しています。

これまでのところ、TakeOff() と EnablePush() を呼び出すことができ、アプリは正常に登録されています。次のコードを参照してください。

PushManager.shared().setIntentReciever(myClass) を呼び出す必要がありますが、shared() クラスまたは setIntentReciever メソッドにアクセスできないようです。メソッドにアクセスするためにさまざまな組み合わせを試しましたが、クラス/メソッドが見つからないという例外が発生し続けます。

これに関する任意の助けをいただければ幸いです! 1行で解決できると確信しています。構文に何かが欠けているだけだと思います。

よろしく

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

java - ファイルをjbyteArrayに読み取るためのC++のJNI

JNIを使​​用してJavaで呼び出される共有ライブラリを生成するためにUNIXでC++プログラムを作成しています。jbyteArrayこのC++プログラムは、UNIXボックスでファイルを読み取る必要があります。その後、JAVAが使用できるように、ファイルを(JNIデータ型)に変換する必要があります。

ファイルをC++で読み込みましchar*たが、に変換できませんでしたjbyteArray。助けてください。

コードは以下のとおりです::

エラーは次のとおりです

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

java-native-interface - JNI を使用する C++ アプリケーションで、「jvm.dll が見つかりません。アプリケーションを再インストールすると修正される可能性があります ....」というエラーがスローされます。

jni を使用して Java でメソッドを呼び出すプレーンな C++ アプリケーションを VC6 で作成しました。そのために、jni.h およびその他の lib フォルダーをプロジェクト ディレクトリに含めました。

コードはコンパイルされますが、アプリケーションを実行すると、「jvm.dll が見つかりません。アプリケーションを再インストールすると修正されます」と表示されて失敗します。しかし、jvm.dll は私の PC に存在します。

アプリケーションの作業ディレクトリをjvm.dllがある場所に設定すると、魅力的に機能します。このアプリケーションは将来 dll になるため、アプリケーションの作業ディレクトリを jvm.dll のディレクトリに設定することはできません。

システム変数のPATH変数もjvm.dllの場所に更新しようとしましたが、何も機能しません..

jvm.lib が、アプリケーションによって提供されていない特定のディレクトリの場所から jvm.dll をロードしていると思われます..したがって、失敗します..

何が問題なのか教えてください。

前もって感謝します。

よろしくラガヴェンドラ

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

java - 特定のシステム プロセス名を Java Swing GUI リストに表示する

次のメソッドで得られるシステム プロセスのリストがあります。 public native int fetchProcessIDs(int[] pids); public native String getProcessName(int hProcess); これらのプロセスをJava Swing GUIリストに表示する必要があります.しかし、そのGUIリストに特定のプロセスのみを表示したい. たとえば、GUI リストに chrome.exe という名前のシステム プロセスのみを表示したい。プロセスとメモリの状態も GUI に表示されます。特定のネイティブ メソッド リストから特定のプロセスをリストに表示するにはどうすればよいですか。いくつかの解決策を提案してくださいありがとう。

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

c - Cの画像のディレクトリからビデオを作成するにはどうすればよいですか?

c言語を使用して一連の画像を含むディレクトリからビデオを作成するにはどうすればよいですか。これをacクラスファイル内で実行したい(コマンドプロンプトでは実行しない)。これに似たもの。

スタックオーバーフローにいくつかのコードがありましたが、それはすべてコマンドラインコードの実行に関するものです。これはコードです

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

android-ndk - JNI オブジェクトとスレッド セーフのキャッシュ (Android)

ネイティブ スレッド (pthreads) を使用して C++ アプリを作成していますが、いくつかの Java メソッドなどを呼び出す必要があります。別のスレッド。クラスのメソッドが異なるスレッドから呼び出される可能性がある場合、JNIEnv をキャッシュするのではなく、代わりに JavaVM をキャッシュし、現在のスレッドをアタッチして JNIEnv を取得する必要があることはわかっています。しかし、それはまた、JNIEnv から取得したものをキャッシュできないということですか? 次の JNIEnv メソッドで取得したオブジェクトを使用する必要があります。

FindClass、GetMethodID、NewObject、NewGlobalRef

それらはスレッド間で有効なままですか、それとも毎回新しいものを取得する必要がありますか? 後者の場合、1 つのネイティブ スレッドでオブジェクトを作成し、別のスレッドで同じオブジェクトにアクセスできる方法はありますか?

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

java - CallVoidMethodを呼び出すときのNoSuchMethodError

jniクラスから非静的関数を呼び出していますが、ゲームは

NoSuchMethodError

私は以下の機能を与えました

jniクラス

Javaクラス

なぜそうなのか誰か教えてもらえますか

これは私のlogcat出力です

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

android - JNIEnv グローバル参照は C の jobject とどう違うのですか?

現在、JNI 環境とジョブジェクト オブジェクトをローカルに保存しています。JNI を ICS およびアップ デバイスで実行するには、JNI コードを修正する必要があることがわかりました。これは私が得るエラーです:

これらのグローバルを作成/破棄する方法、およびそれを正しく行っているかどうかについて混乱しています。

私のアプリケーションは現在、次のコードを使用してすべての ICS 以前のデバイスで正常に動作します。

呼び出しの下GetStaticMethodIDで、RelayAPI_ 変数はすべて、ここにつながる関数ポインターです。

最後に、ここで私の Java コードに戻ります。

初期化を次のように変更しました。

しかし、それらは同じパラメーターを持っているため、これは非常に混乱しており、意味がありません。このメソッドのドキュメントはどこにもありません。馬鹿げているように聞こえますがthis tutorial、メソッド自体に関する情報はthis pageありthe oracle docsません。NewGlobalRef

編集