問題タブ [jnaerator]
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 - JavaJNAラッパーを生成するためのjnaeratorのSimpleMeaningfulExampleは機能しません
jnaerator SimpleMeaningfulExample(http://code.google.com/p/jnaerator/wiki/SimpleMeaningfulExample)を試してみました。
…MacOSX10.5.8とUbuntu8.04の両方で、どちらもJava1.5.0_20を実行しています。
Mac OS Xで1.6.0_15に切り替えて、もう一度試してみました。
私は何か間違ったことをしていますか?
更新:users@jna.dev.java.netに質問を投稿し(このスレッドを参照:https ://jna.dev.java.net/servlets/BrowseList?list = users&by = thread&from = 2312620 )、Olivierから応答を受け取りましたJNAeratorプロジェクトの所有者であるChafik。要約する:
- JNAeratorでリグレッションを見つけました
- 彼は固定スナップショットビルドをアップロードしました:http://jnaerator.sourceforge.net/maven/com/jnaerator/jnaerator/0.9.3-SNAPSHOT/
- そのビルドはうまく機能しましたが、TestLibrary.javaを生成しませんでした
- バグレポートを提出しました:http ://code.google.com/p/jnaerator/issues/detail?id = 50
更新#2: TestLibrary.javaの欠如はバグではないことに気付いた後、Olivierは再度応答しました。これは、デフォルトで生成されたTest.jarファイルに埋め込まれているためです。
java - JNAerator 構造体に名前のない共用体がありません
JNAerator を使用して、C 共有ライブラリから JNA を使用した Java コードを生成しようとしていますが、構造内にネストされた名前のない共用体の生成に失敗したことを除いて、すべて問題ありません。
例:
ヘッダーを変更してユニオンに名前を付けると、機能します。しかし、明らかな理由から、使用しようとしている共有ライブラリを壊さずにヘッダーを変更することはできません。
ヘッダー ファイルと共有ライブラリを名前付きユニオンに変更する以外の解決策はありますか?
arrays - JNA:構造体で構造体の配列にアクセスする方法は?
構造体内の構造体の配列にアクセスしようとしています。これは、問題に縮小された関連する C コードです。
C では、配列へのアクセスは次のように簡単です。
これを Java で実装するにはどうすればよいですか? 私はJNAが初めてなので、この質問をしています。これまでのところ、JNAのドキュメントを読んで、私の問題に何らかの形で関連しているすべての例を試しましたが、うまくいきませんでした...
ヘッダーファイルの変換には JNAerator を使用しました。結果が正しいかどうかはわかりません。
どんな助けでも大歓迎です。
java - Cヘッダーファイルをラップして、dllおよびJNA(erator)で使用します
アクセスする必要のある特定のライブラリへのCヘッダーがあります。そこで、私はJNAeratorを使用して、退屈なコードの遷移を実行しました。最近、人々がそれを推奨していることを読んだ後です。私が見たものからはかなり堅実なようです:
完全なコードは私のGitHubにあります。
ここで、dllをオブジェクトとしてインスタンス化し、作成したインターフェイスからヘッダー情報をラッパーとして渡します。
驚いたことに、これは機能していません。.Z3_config()は抽象です。mk_configは静的でネイティブです。だから私もそれを解決することはできません....実際には、dllを見つけるためのパラメータとしてNative.loadLibrary関数へのパスを渡す必要があると思いました。dllをJavaクラスと同じパスに配置します。これは紛らわしく、私も間違っていると思います。
では、JNAeratorが生成したインターフェイスをインスタンス化する正しい方法は何でしょうか。
maven - Mavenプラグインの各呼び出しが実行されるJVMプロセスをフォークするにはどうすればよいですか?
マルチモジュール(アグリゲーター)Mavenプロジェクトでコード生成プラグイン(maven-jnaerator-plugin )を使用しています。モジュールのうちの2つは、コード生成を実行する必要があります。ただし、最初のモジュールのみがソースを正しく生成し、2番目のモジュールは失敗します。
このような干渉が発生しないように、プラグインを別のJVMプロセスで実行するようにMavenに指示する方法はありますか?プラグイン自体は、そのような構成(「フォーク」など)を公開しません。
pointers - JNA: 構造体へのポインターへのポインター
関数呼び出しがあります:
long foo(mystruct **list)
の定義mystruct
は
バーに対応する(JNA)Structure[]を取得しようとしています。私の現在の関数定義はint foo(PointerByReference list);
、それがポインターへのポインターであるためですが、Structure[] を取得する方法がわかりません。
C では、コードは次のように使用されます。
java - JNAerator-typedefによって生成されたインターフェースを使用
typedef命令からJNAeratorによって生成されたインターフェイスを使用しようとしていますが、それを行う方法が見つかりません。
.hファイルの関数は次のとおりです。
ヘッダーファイルには、元のtypedef命令も含まれています。
JNAeratorは以下を生成します:
方法:
インターフェース:
そしてクラス:
LPCWSTR
問題は、Stringを使用Pointer
してオブジェクトをインスタンス化し、メソッドLPCWSTR
に渡すことができるようにする方法がわからないことInitialize
です。
これどうやってするの?
アップデート:
使用するように.hファイルを変更しましたwchar_t*
:
JNAeratorは、次のようなメソッドを生成しました。
だから私はそれをこのように呼んだ:
問題は、次の例外が発生することです。
この行で:
私は何が間違っているのですか?
java - Void* パラメータを使用してソケット データを JNA 関数に渡す
Windowsでは、Javaソケットを介してサードパーティのTCPデータが入ってきます.JNAを使用して、同じサードパーティが提供するCライブラリにデータを渡す方法を見つけようとしています。私はJNA/JNI/Cなどすべてに不慣れです。
サードパーティのライブラリは、ソケットから着信バイトを取得し、正しいメッセージ タイプにデコードします。入ってくるデータは任意の長さであり、終了区切り文字がなく、開始区切り文字が非常に短いため (データの途中に表示され、実際の区切り文字ではない可能性があります)、これを使用する方法を理解するのは実際にはおそらく簡単です。自分でロールバックする (または C を学ぶ) 代わりに、JNA を介してライブラリを使用します。
jnaerator を使用して、C ヘッダー ファイルからソース コードを生成することができました。また、パラメーターを必要としない単純な C 関数の呼び出しにも成功しました。しかし、元々 void ポインターを受け入れていた C 関数に「生データ」を渡す必要がある関数を使用しようとすると、どうすればよいかわかりません。
コードからの関連するスニペットを次に示します。
受信を取得するにはどうすればよいですか
JNA関数が期待するポインタへの「生データ」? 他に知っておくべき落とし穴はありますか? エンディアン、符号なしバイトの問題など?
大したことではないかもしれませんが、できる限りの支援をお願いします。
java - Java から dll (C++ ライブラリ) メソッドを呼び出す
C++ で記述されたヘッダー ファイルを含む .dll ライブラリがあります (ソース コードはありません)。このライブラリは、いくつかの別の .dll ファイルを使用します - 私もそれらを持っています。私の仕事は、Java からこのライブラリを使用することです (メソッドを呼び出して結果を受け取る)。
この目的で JNAerator を使用できることがわかりました。どのようなアルゴリズムになりますか? java -jar jnaerator.jar MyLib.dll MyLibHeader.h
コマンド を試しましたが、出力されます
-h を使用してヘルプを表示するには? どのモードが必要ですか? コマンドの例には dll が 1 つしかありませんが、相互に依存しているため、そのうちの 3 つを使用したいと考えています。
それは私の仕事に適したツールでしょうか?(いくつかのチュートリアルは高く評価されます)。ありがとう。
java - 文字列値をポインタに変換する方法(Java、JNAerator)?
JNAerator を使用して .dll ライブラリを JAR に変換しました。次に、次のような OpenTCPIPPort_V メソッドを呼び出す必要があります。
public static short OpenTCPIPPort_V(Pointer<Byte > tcpPort, Pointer<Byte > IPAddr)
このメソッドに 2 つの文字列値を渡す方法は?