2009-01-29 34 views

Trả lời

11

Ví dụ (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); 
    } 
} 

Trong trường hợp này, chúng ta tải nó từ thư viện "kernel32.dll". Tôi hy vọng điều này làm cho JNA rõ ràng hơn.

EDIT: Tôi sẽ giải thích mã: Bạn cần xác định giao diện (mở rộng com.sun.jna.Library) bằng các chức năng bạn cần từ thư viện. Sau đó, gọi com.sun.jna.Native.loadLibrary ("LibraryName", InterfaceName.class). Cuối cùng, lưu trữ đầu ra trong một biến với loại giao diện. Chỉ cần gọi các hàm từ biến đó.

+1

Bạn nên mở rộng StdCallLibrary cho ví dụ cụ thể mà bạn đã cung cấp. Có hay không nó áp dụng cho thư viện tùy chỉnh của người dùng phụ thuộc vào những gì gọi quy ước mà thư viện sử dụng. – technomage

+0

làm thế nào để cung cấp đường dẫn cho dll tùy chỉnh của tôi, tôi có nghĩa là nếu dll của tôi nằm đâu đó trong e:/Mydll. sau đó làm thế nào để cung cấp đường dẫn và nếu Mydll được thực hiện bằng cách sử dụng một số dll và thư viện khác thì tôi cần phải cung cấp đường dẫn một nơi nào đó cho các dll cũng? – Jony

Các vấn đề liên quan