Using JNA to link to custom dll

后端 未结 1 1998
日久生厌
日久生厌 2020-12-09 06:07

how do I access custom .lib / .dll functions using JNA? Can someone provide an example?

Thank you.

相关标签:
1条回答
  • 2020-12-09 06:34

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

    In this case, we load it from the "kernel32.dll" library. I hope this makes JNA clearer.

    EDIT: I'll explain the code: You need to define an interface(that extends com.sun.jna.Library) with the functions you need from the library. Then, call com.sun.jna.Native.loadLibrary("LibraryName", InterfaceName.class). Finally, store the output in a variable with the type of the interface. Just call the functions from that variable.

    0 讨论(0)
提交回复
热议问题