4

提供された.dllがあり、Javaを使用してインターフェースする必要があります。

jni.hで提供されているJNIタイプを使用するには、Cを書き直す必要がありますか?javasunのjniの例に見られるように。それ以外の場合、Java関数がポインターを送受信するようにネイティブ関数を宣言するにはどうすればよいですか?

ありがとう

4

3 に答える 3

4

JNAが役に立つかもしれません

「JNA は、Java コードだけを記述することなく、Java プログラムがネイティブ共有ライブラリ (Windows 上の DLL) に簡単にアクセスできるようにします。JNI またはネイティブ コードは必要ありません。この機能は、Windows の Platform/Invoke および Python の ctypes に匹敵します。アクセスは実行時に動的です。コード生成なし。」

于 2009-05-27T20:30:47.917 に答える
3

ある意味、そうです。

ほとんどの場合、型変換を実行し、「実際の」DLL 内の対応する関数に委譲する関数を含む小さな「ラッパー」DLL を作成するだけです。

于 2009-05-27T20:20:43.257 に答える
2

もちろんCコードを書き直すこともできますが、Cコードのラッパー(技術的には、ファサードまたはブリッジパターンを使用)を作成することも珍しくありません。Javaで期待に一致するコードを記述し、そのコードに既存のCコードを呼び出させます。

于 2009-05-27T20:25:40.640 に答える