2012-04-16 2 views
0

Java 응용 프로그램에서 사용할 DLL 드라이버가 있습니다. JNI 용 dll 브리지를 만들어야한다는 것을 알았습니다. 우선이 다리를 자동으로 만들 수있는 유틸리티가 있는지 알고 싶습니다.JNI dll 브리지를 작성하는 방법

나는 DLL의 소스 코드를 가지고 있고 브리지 헤더 파일 (javah)을 만드는 방법도 알고 있지만 드라이버 구현 방법을 호출해야하기 때문에 브리지 구현 방법을 이해할 수 없다 ... . 도와 주실 수 있습니까?

나는 또한 JNA에 대해 읽어
BOOL CALLINGCONV IsInitialized(); 
int CALLINGCONV Initialize(int Slot); 
int CALLINGCONV Finalize(); 
int CALLINGCONV FinalizeML(int nSlot); 

, 쉽게 보이지만 어쩌면 매우 빨리하지, 그것이 사실 : 예를 들어

이 내 드라이버의 헤더입니까? Thnak 당신은

+0

나는이이 말을 잊었 : 예를 들어, 자바 클래스는 헤더와 라이브러리 파일이 "Driver.h"을 각각 "Driver.lib"라는 가정하에, 액세스에게 자바에서 효율적으로 그 네 가지 기능을 할 수있다 C 드라이버. – Tobia

+0

얼마나 빨리 필요합니까? 얼마나 자주 이러한 방법이 호출됩니까? –

+0

이 사용 사례의 경우 JNA (https://github.com/twall/jna#readme)가 JNI보다 쉬울 수도 있습니다. –

답변

0

JavaCPP이 JNA만큼 간단하지만 빠른 원시 JNI로 당신에게 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); 
} 
관련 문제