2009-01-29 6 views

답변

11

예 (from Wikipedia) :이 경우

import com.sun.jna.win32.StdCallLibrary; 
import com.sun.jna.Native; 

/** Simple example of Windows native library declaration and usage. */ 
public class BeepExample { 
    public interface Kernel32 extends StdCallLibrary { 
     // FREQUENCY is expressed in hertz and ranges from 37 to 32767 
     // DURATION is expressed in milliseconds 
     public boolean Beep(int FREQUENCY, int DURATION); 
     public void Sleep(int DURATION); 
    } 
    public static void main(String[] args) { 
    Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32", 
      Kernel32.class); 
    lib.Beep(698, 500); 
    lib.Sleep(500); 
    lib.Beep(698, 500); 
    } 
} 

, 우리는 "KERNEL32.DLL"라이브러리에서로드합니다. JNA가 더 명확 해지기를 바랍니다.

편집 : 코드 설명 : 라이브러리에서 필요한 기능으로 인터페이스 (com.sun.jna.Library를 확장)를 정의해야합니다. 그런 다음 com.sun.jna.Native.loadLibrary ("LibraryName", InterfaceName.class)를 호출하십시오. 마지막으로 출력 유형을 인터페이스 유형과 함께 변수에 저장하십시오. 해당 변수의 함수를 호출하기 만하면됩니다.

+1

사용자가 지정한 특정 예제에 대해 StdCallLibrary를 확장해야합니다. 사용자 지정 라이브러리에 적용되는지 여부는 라이브러리가 사용하는 호출 규칙에 따라 다릅니다. – technomage

+0

내 dll이 e :/Mydll에있는 경우 맞춤 DLL을위한 경로를 제공하는 방법을 의미합니다. 다음 경로를 제공하는 방법 및 Mydll 다른 dll 및 라이브러리를 사용하여 만든 경우 이러한 dll 어딘가에 경로를 제공해야합니까? – Jony

관련 문제