3

Java コードからいくつかの静的な Windows ライブラリ ( *.lib) を使用する必要があります。C++ JNI ラッパーを作成することはできますが、それはしたくありません (C++ の経験はありません)。

それを使用する最も簡単な(開発の労力が最も少ない)方法は何でしょうか。パフォーマンスは重要ではありません.

ほとんどの場合、私はJNAを使用しますが、私の知る限り、動的ライブラリが必要であり、静的ライブラリがあります。

また、静的ライブラリを動的ライブラリに変換することについても質問しました。

4

2 に答える 2

3

スタティック ライブラリを直接呼び出す DLL (ダイナミック ライブラリ) プロジェクトをいつでも作成でき、新しく作成された DLL で JNA を使用できます。

于 2009-05-10T11:53:53.233 に答える
2

価値のあるものとして、私はこのようなプロジェクトをしばらく前に持っていました。JNI ラッパーの自動生成は非常に簡単でした。約 350 個の関数エクスポートをラップしたと思います。ラッパーを自動生成するスクリプトをまとめるのに約 3 時間かかりました (申し訳ありませんが、スクリプトを手元に置いていないか、投稿します)。

自分たちで C++ コードを書くことはほとんどありませんでしたが、JNI の仕組みを理解する必要がありました。 JVM がどのように機能するかについて多くのことを学びます...

このルートに進む場合は、ラッパー関数を非常に軽量に保つことをお勧めします。文字通り、処理はまったく行わないでください。必要な引数を JNI 値からネイティブに変換し (これは主に文字列に必要です)、ネイティブ関数を呼び出して、結果を変換して戻します。

文字列ポインターを渡し、文字列がポインターに返されることを期待する関数がある場合は、Java 側からサイズ 1 の文字列配列を使用し、ネイティブ呼び出しの結果を入力します。

または、時間がない場合は、.lib を .dll にコンパイルし、JNA を使用してください :-)

于 2009-05-10T21:54:28.970 に答える