2009-01-29 5 views

Répondre

11

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

Dans ce cas, nous charger de la bibliothèque "kernel32.dll". J'espère que cela rendra la JNA plus claire.

EDIT: Je vais vous expliquer le code: Vous devez définir une interface (qui étend com.sun.jna.Library) avec les fonctions dont vous avez besoin de la bibliothèque. Ensuite, appelez com.sun.jna.Native.loadLibrary ("LibraryName", InterfaceName.class). Enfin, stockez la sortie dans une variable avec le type de l'interface. Appelez simplement les fonctions de cette variable.

+1

Vous devriez étendre StdCallLibrary pour l'exemple spécifique que vous avez donné. Qu'elle s'applique ou non à la bibliothèque personnalisée de l'utilisateur dépend de la convention d'appel utilisée par cette bibliothèque. – technomage

+0

comment fournir le chemin pour ma DLL personnalisée Je veux dire si ma DLL se trouve quelque part dans e:/Mydll. alors comment fournir le chemin et si Mydll fait en utilisant un autre dll et une bibliothèque alors dois-je fournir un chemin quelque part pour ces dll aussi? – Jony

Questions connexes