問題タブ [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.

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

jna - JNAerator の使用方法

JNAerator を使用して、JNA 用のいくつかの C++ API 関数の Java ラッパーを生成したいと考えています。問題は、職場の PC から JNAerator Studio を使用したり、Github にアクセスしたりできないことです。Github リポジトリの .zip ファイルしかありません。コマンドラインから使用する方法に関するドキュメントやチュートリアルが見つかりません。誰でも私を助けることができますか?

編集: Maven でリポジトリをコンパイルしようとしましたが、「解決できない親 POM」というエラーが表示されます。しかし、とにかく、リポジトリをコンパイルした後、どうすればよいかわかりません。JNAerator を使用するには、どのような手順を踏む必要がありますか?どのように設定すればよいですか?

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

java - JNAerator で C クラスのヘッダーをラップする

次のコードがあります。

Person.h :

Person.cpp:

次のコマンドを実行します。


jnaerator フォルダーから、Person.h への絶対パスを指定しましたが、機能しません。jnaerator を介して C クラス ヘッダーへの JNA コードを生成する方法はありますか?

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

jvm - JNAを使用してバイト値を読み取るプラットフォームの違い

FTDI 周辺機器からデータを取得する JavaFX アプリケーションを作成しました。JNAerator を使用して API を生成したところ、開発マシン (OS X) ですべてが美しく動作しました。ただし、同僚のボックス (Windows) でテストすると、BirdJ Pointer.getBytes() メソッドは、すべての値が正確に 128 ずれているバイト配列を返します。

この一貫性のない動作を説明する既知のプラットフォームの違いや Java の何かがありますか、それともネイティブ FTDI ドライバーの問題である可能性が高いですか?

読み取りまたは書き込みのすべてのバイトを変更する醜いプラットフォーム固有のロジックを導入するよりも、それを解決するためのよりクリーンな方法はありますか?

編集

問題の説明が明確だったかどうかはわかりません。これが具体的な例です。

データを送信する準備ができていることを確認するために、FTDI デバイスに 3 バイトを要求します。「A5 FF FF」を期待するというドキュメントに一致する [-91, -1, -1] を取得します。私のコードはその答えを受け入れるように書かれており、すべてがうまくいきます。

私の同僚は [37, 127, 127] となり、これは "25 7F 7F" です。これは期待値ではないため、コードはエラーを報告して終了します。

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

java - JNAでGetProcAddressを使用するには?

まず第一に、私はJNA初心者です。Java コードからマザーボードの LED 照明を制御したいと考えています。Asus は、この目的のために C (C++?) で書かれた SDK を提供しています。

ヘッダー ファイルは単純に見えます。

JNAerator を使用して JNA マッピングを取得しました。これが得られた結果です。

C++ コードの例では、GetProcAddress を使用して上記のメソッドへのアドレスを取得し、その方法でそれらを呼び出すことができます。

JNAで同じことを行うにはどうすればよいですか?

前もって感謝します。

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

java - JNAerator は __stdcall 戻り値を持つメソッドを生成します

私は現在、使用しなければならない DLL 用の JNA ラッパーを生成するのに苦労しています。DLL と対応する .h ファイルは IBM (Spectrum Protect aka Tivoli Storage Manager または ADSTAR) によって提供されているため、私の人生では、JNAerator を適切に使用できないようです。

例:

これは、ヘッダー ファイルの 1 つの抜粋です。

この dsInt16_t は、別の .h ファイルで定義されていることが判明しました。

JNAerator を実行した後の結果は、私が期待したものではありません。

戻り型は次のように定義されます。

最後に C を使ったのは学生時代でした。それは 20 年以上前のことなので、間違いなく少し錆びています。

ここで何が欠けていますか?たとえば、戻り値が dsInt16_t または short になることを望んでいました。

フォローアップの質問: DLL は、戻りコード (前述の dsInt16_t 戻り値) を説明するためのメソッドを提供します。

繰り返しますが、これは .h ファイルの定義です。

...そしてこれが結果のJavaコードです:

そのため、C パラメータの型 dsInt16_t を Java の型 dsInt16_t に「変換」しました。これは素晴らしいことです。この Java 型 dsInt16_t はインターフェイスであるため、この型のインスタンスを作成して実際にメソッドを呼び出すにはどうすればよいでしょうか? (最初の質問が解決されると、この質問は時代遅れになると思います。)