問題タブ [jna]

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 投票する
0 に答える
1357 参照

java - JNA ライブラリ - Mac OS X での問題

これは、Java プログラムの JNA ライブラリーに関する質問です。

私はトレイアプリケーションを持っています。「JFrame 1」は、プログラムの開始時にロードされます。「JFrame 1」はカスタム形状で透明度があります。(カスタムシェイプ = 楕円) Windows、Linux、Mac OS X で動作します。

しかし!

「JFrame 2」(カスタム形状と透明度のない通常の JFrame) を開くと、「JFrame 1」はカスタム形状を失い、通常の装飾されていないフレームが表示されます。(四角) これは Mac OS X でのみ発生します。

私はインターネットを検索しましたが、運がありません。多分あなたは私を助けることができます。

ありがとう、ジャンニ

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

javascript - JNA、Rhino、JavaScriptを使用したcharバッファの割り当て

イッカクでは、JNAを使用してやlibcのような呼び出しを行っています。これは、プリミティブのみを扱うRhinoのJavaScriptに関連するため、JNAインターフェイスに関する限られた知識でしか使用できませんでした。charバッファを割り当てて、そのバッファからJavaScript文字列を取得し、おそらく句でバッファの割り当てを解除できるようにする方法を知る必要があります。getcwdchdirgetcwdfinally

libcインターフェイスを取得する方法は次のとおりです。

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#L32-42

chdir実装方法は次のとおりです。

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#L438-444

ここにソリューションが必要ですgetcwd

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#L416-419

RubyまたはJNA用の他の組み込み言語のソリューションが役立ちます。

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

java - Java 透過 JFrame、JVLC、および java.awt.Canvas

ビデオストリームが提供するJVLCライブラリの上に透明なJFrameの効果を達成しようとしています。バックグラウンドは java.awt.Canvas のインスタンスです。フォアグラウンドは、いくつかのコントロールを持つ JFrame です。

rootPane.setForeground(myFrame); rootPane.setBackground(myCanvas);

JVLC は、この jvlc.setVideoOutput(myCanvas); のように、JNA を介してキャンバスを使用します。jvlc.apply();

myFrame が myCanvas に対して常に透過的であることを期待しています。この仕事を得る方法はありますか?

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

java - Java Native Access は C++ をサポートしていませんよね?

C ++ライブラリに使用されているJNAへの参照をオンラインで(stackoverflowの一部を含む)見つけましたが、JNAドキュメントで見つけることができるものは何もありません。特に、C++ クラスをラップする方法はないようです。

RTAudio を使用するにはネイティブ アクセスが必要ですが、RTAudio の関数はすべて RTAudio クラスのメンバー関数です。確認のために言っておきますが、JNA は適切な方法ではありませんか?

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

java - Java ネイティブ通信パフォーマンスの解釈

現在、Java ネイティブの通信に JNA を使用していますが、その単純さに満足しています。ただし、パフォーマンスを最適化する必要があり、他のバインディングの使用を検討しています。

私の質問はこれです: Java ネイティブ通信のどの部分が「高価な」部分ですか? それらの間のデータの受け渡しですか?

別の言い方をしましょう。現在、私の JNA インターフェイスが呼び出している関数は Java にデータをまったく渡さず、関数はそれほど頻繁には呼び出されません。つまり、Java がライブラリ呼び出しを呼び出すと、ライブラリ呼び出しはしばらくの間独自の処理を行い、プリミティブ型を返します。そのような状況では、JNI/Swig/etc は JNA よりも速くなりますか?

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

java - プロセス実行よりも JNA を使用する利点

を使用して現在多くの外部プログラムを実行するプロジェクトがありますjava.lang.Process。それらの機能がネイティブ ライブラリ形式でも利用できると仮定すると、代わりにJNAを使用して前述のライブラリ関数を実行する利点は何でしょうか?

プロセスの実行はかなり重く、完了するまでに数秒かかります。パフォーマンスの向上は最小限であると考えるのは正しいですか?

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

jna - PVOID に相当する JNA

JNAでのPVOIDの表現は何ですか?

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

java - char** に関する JNA の問題 (dll 内)

jnaを使用してdll内でエクスポートされた関数をマッピングするためのjnaラッパーソリューションを作成するのは「簡単」です。

しかし、どのように対処するのlong f3(char** z)ですか?

f3のresult(long)とzJava側の値が必要です。

これを避けるためにcppコードを書き直す必要があるとは言わないでください:-)

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

java - Javaアプリでターゲットライブラリを利用できるようにするにはどうすればよいですか?

JNAを使用すると、ドキュメントには次のように記載されています。

ターゲットライブラリをJavaプログラムで使用できるようにします。これを行うには2つの方法があります。推奨される方法は、jna.library.pathシステムプロパティをターゲットライブラリへのパスに設定することです。このプロパティは、JNAによってロードされたライブラリに似てjava.library.pathいますが、適用されるだけです。

これは実際にはどういう意味ですか?jna.library.pathシステムプロパティを設定するにはどうすればよいですか?私のアプリは参照する必要がありますKernel32.dll

ありがとう

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

java - JNA 経由で Xlib を使用してウィンドウを移動する

Xlib メッセージを送信して Linux 上のアプリケーション ウィンドウを操作するために JNA を使用していますが、ウィンドウを移動できないようです。

私の元の実装では、シェルで wmctrl を実行してウィンドウを移動し、ウィンドウを正常に移動しました。残念ながら、Java からのシェル プログラムの呼び出しに関連するかなりの量のオーバーヘッドがあるため、現在、JNA を使用して直接 API 呼び出しを行うことを試みています。私は JNA Web サイトから入手できる X11 の例を使用しており、ウィンドウ ID の列挙やウィンドウ プロパティの読み取りなど、いくつかのトリックを正常に実行できるため、JNA+Xlib が少なくとも部分的に機能していることがわかります。

最初に使用してウィンドウを直接移動しようとしましたXMoveWindow()が、ウィンドウマネージャーがそれらの呼び出しをブロックしていたようです。

を使用してクライアント メッセージを送信する必要があることを示唆するスレッドに出くわしたので、以下で実行しましたが、ウィンドウが移動せず、戻り値が返されるため、XSendMessage()明らかに失敗しています。明らかなことを省略したと思いますが、それを完全に理解することはできません。助言がありますか?XSendMessage()0

この例では、main メソッドにはウィンドウ ID がハードコーディングされていることに注意してください。これは、移動しようとしているウィンドウのウィンドウ ID です (wmctrl -lコンソールで使用して取得)。