2012-04-16 9 views
0

私はJavaアプリケーションで使用するdllドライバを持っています。 私はJNI用のdllブリッジを作成する必要があることを読んでいます。まず最初に、このブリッジを自動的に作成するユーティリティがあるかどうかを知りたいと思います。JNI dllブリッジの作成方法

私は、DLLのソースコードを持っている、と私はまた私のブリッジのヘッダファイル(javahはを)クレアーレする方法を知っているが、私はちょうどドライバメソッドを呼び出す必要があるため、私はブリッジの実装に配置する方法を理解することはできません... 。 私を助けることができますか?たとえば、これは私のドライバのヘッダである

BOOL CALLINGCONV IsInitialized(); 
int CALLINGCONV Initialize(int Slot); 
int CALLINGCONV Finalize(); 
int CALLINGCONV FinalizeML(int nSlot); 

私もJNA読ん、それは簡単に多分それは非常に高速ではないようで、それは本当ですか? Thnakあなた

+0

:たとえば、このJavaクラスは、ヘッダファイルとライブラリファイルは、それぞれ「Driver.h」と「Driver.lib」と命名されていると仮定すると、アクセスJavaで効率的にこれらの4つの機能を聞かせてできましたCドライバ。 – Tobia

+0

あなたはどれくらい速くそれを必要としますか?これらのメソッドはどれくらい頻繁に呼び出されますか? –

+0

このユースケースでは、JNI(https://github.com/twall/jna#readme)がJNIより簡単かもしれません。 –

答えて

0

JavaCPPで簡単に作業がJNAと同じくらい簡単ですが、早く生のJNIようにする2つの異なるライブラリを提案することができます。私はこれがあると言うのを忘れて

import com.googlecode.javacpp.*; 
import com.googlecode.javacpp.annotation.*; 

@Platform(include="Driver.h",link="Driver") 
public class Driver { 
    static { Loader.load(); } 
    public static native @Cast("BOOL") boolean IsInitialized(); 
    public static native int Initialize(int Slot); 
    public static native int Finalize(); 
    public static native int FinalizeML(int nSlot); 
} 
関連する問題