問題タブ [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 - .dllからJavaクラスを生成する
Javaからアクセスしたいデバイスがあります。これを行う唯一の方法は、製造元が提供するdllライブラリを使用することです。JNI、JNAなどについて読んだことがありますが、dllを分析してJavaクラスを自動的に生成するツールが外部にあるかもしれません。
誰かがこれを行う方法を知っていますか?
java - PointerByReferenceアドレスをJNAの構造に渡す方法
次の情報源について質問がありますが、少しわかりやすくするために簡略化しました。
cコード
Javaコード
私はこのようにJavaの構造にアクセスします、
Visual Studioでこれをデバッグしたとき、create_contextとuse_contextに異なるメモリアドレスが使用されていることを確認しました。int test1の値を設定すると、それは正しいのですが、なぜコンテキストのアドレスが異なるのか疑問に思います。誰かアイデアがありますか?それはメモリの問題につながりませんでしたか?または、私が間違っていることについて何か考えはありますか?ありがとうバレンチナ
memory - JNAerator BridJ ランタイム静的メソッド インスタンス メモリ
そのため、最近 JNAerator を更新し、新しい BridJ ランタイムの使用を開始しました。問題をデバッグしようとしていますが、それがライブラリのコードなのか JNAerator 自体なのかわかりません。
基本的に、私の C ライブラリにはinit()
、他の C ライブラリ メソッド間で共有変数をメモリ内で初期化するメソッドがあります。新しい BridJ ランタイムと、ライブラリ用に生成された Java コードが静的メソッドのみを作成する新しい注釈があることに気付きました。これにより、C ライブラリがさまざまな静的 Java メソッドへのさまざまな呼び出し間でメモリ内の値を維持する際に問題が発生しますか?
java - Java から Objective-C コードを呼び出す最も簡単な方法は何ですか?
Java コードから Mac OSX 上の Wifi デバイスのリストにアクセスする必要があります。調査した結果、「ネイティブ」コード、つまり CoreWLAN フレームワークと CWInterface.h クラス ( https:// developer.apple.com/library/mac/#documentation/CoreWLAN/Reference/CWInterface_reference/translated_content/CWInterface.html )
私は当初、JNA を使用してこのコードを呼び出すことができると考えていましたが、CoreWLAN は Objective-C (C/C++ ではない) であるため、何かが必要であることに気付きました。
この Objective-C Java ブリッジ ( https://github.com/shannah/Java-Objective-C-Bridge ) を試しましたが、CoreWLAN フレームワークを見つける方法がわかりません。
そこで、JNAerator ( https://code.google.com/p/jnaerator/wiki/ObjectiveC ) も試してみたので、BridJ ( https://code.google.com/p/bridj/ )を使用できます。しかし、正しい Java コードを生成することはできません。
- このスタイルを使用すると
java -Xmx1000m -jar jnaerator.jar -framework CoreWLAN -jar CoreWlan.jar
すぐに実行されますが、CoreWlan.h のマッピングのみを含む jar が作成されます。 - CWInterface.h に対して jnaerator を実行すると、jnaerator が失敗します。(jnaerator の最新のスナップショット バージョンを使用しています)
Java から CWInterface.h のメソッドを呼び出す最良の方法は何ですか?
java - JNAerator でビルドされた jar をクラスパスに追加しても使用できませんでした
ここで最新の JNAerator jar (jnaerator-0.12-SNAPSHOT-20130609) をダウンロードしました。次に、Ubuntu 13.04 64 ビットから、次のコマンドを使用して単純な C ソース (すぐ下) を翻訳しました。
jar operations.jar を取得できるように
操作.c:
次に、この jar を Eclipse (Juno 4.1) テスト プロジェクトのビルド パスに追加します。ここに、プロジェクト組織のスクリーンショットを示します。
ここに私のプロジェクトの単一のソースファイルがあります:
しかし、次のエラー出力が表示されます。
(最後の文の意味: 共有オブジェクト ファイルを開けません: このタイプのファイルまたはフォルダはありません)。
Sun Java7 JDK (64 ビット) を使用しています。
誰かが私が忘れたことを知っていますか?
私のCソースファイルが見つからないという事実のような問題があるに違いないと確信していますが、プロジェクトとjarにいくつかの場所で追加しようとしましたが、問題は解決しませんでした.
よろしく
java - JNA: void** と void* の間の変換
ヘッダー ファイルから JNA を生成しました。ここに、関心のある 2 つの関数を示します。
そして、これがJNAでどのように変換されたかです。
PointerByReference を渡して FT_OpenEx を呼び出し、ポインターを取得して FT_Close に渡します。コードは実行されますが、FT_Close によって返される FT_INVALID_HANDLE を受け取ります。
ここにJavaコードがあります
私の推測では、FT_Close に渡すポインターは、実際には正しいアドレスを指していません。JNAを使用してJavaでvoid **からvoid *に渡す適切な方法は何ですか?
jna - Foo を Foo.ByValue に変換しますか?
ボックス内の温度センサーごとに MBean を作成する目的で、JNA と JNAerator を使用して古い lm_sensors ライブラリと統合しています。まず、私はこのメソッドを呼び出しています:
..うまくいきます。その後、私は呼び出す必要があります:
.. 私が欠けているのは、 の結果を取得し、それを の第 1 引数に値sensors_get_detected_chips
で渡す方法です。sensors_get_feature