2009-01-29 17 views

cevap

11

Örnek (from Wikipedia): Bu durumda

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); 
    } 
} 

, biz "kernel32.dll" kütüphaneden yükleyin. Umarım bu, JNA'yı daha net yapar.

DÜZENLEME: Kodu açıklayacağım: Kitaplıktan gereksinim duyduğunuz işlevlerle (com.sun.jna.Library öğesini genişleten) bir arabirim tanımlamanız gerekir. Sonra, com.sun.jna.Native.loadLibrary (ArabirimAdı), InterfaceName.class) öğesini çağırın. Son olarak, çıkışı bir değişkende arayüzün türü ile saklayın. Sadece bu değişkenden fonksiyonları çağırınız.

+1

Verdiğiniz belirli örnek için StdCallLibrary'ı genişletmeniz gerekir. Kullanıcının özel kitaplığına uygulanıp uygulanmayacağı, kitaplığın kullandığı çağrı kurallarına bağlıdır. – technomage

+0

Özel dll'im için yol nasıl sağlanıyor dll'im e:/Mydll içinde bir yerdeyse. o zaman nasıl yolunu sağlamak için ve MyDiğer diğer dll ve kütüphane kullanılarak yapılmış sonra da bu dll için bir yere yol sağlamak gerekir mi? – Jony

İlgili konular