2009-05-27 9 views
4

私は提供された.dllを持っており、javaを使用してそのインタフェースに接続する必要があります。任意のCコードを使用したJavaネイティブインタフェース

jni.hで提供されているJNIタイプを使用するためにCを書き直さなければなりませんか? Java sunのjniの例に見られるように。 それ以外の場合は、ネイティブ関数my java関数を渡してポインタを受け取るように宣言しますか?

ありがとう

答えて

4

あなたはJNAは、Javaコード-NO JNIまたはネイティブコード以外のものを記述することなくJavaプログラムにネイティブ共有ライブラリ(Windows上のDLL)への容易なアクセスを提供します」JNA便利

を見つけることが必要です。この機能は、Windowsに匹敵します'Platform/InvokeとPythonのctypes。アクセスはコード生成なしで実行時に動的です。

+0

ありがとうございました – tyeh26

+0

JNAはJAVAのDLLを使用するのに適しています – firstthumb

3

ところで、はい。

ほとんどの場合、型変換を行い、 "実際の" DLLの対応する関数に委譲する関数を持つ小さな "ラッパー" dllを書くだけです。

2

もちろんCコードを書き直すことはできますが、Cコードにラッパー(技術的にはFacadeまたはBridgeパターンを使用)を書き込むのは珍しいことではありません。あなたは、あなたの期待に合ったコードをJavaで書いて、そのコードがあなたの既存のCコードを呼び出させるようにします。

関連する問題