JNA就是Java Native Access , 是為了解決JNI的不便利性所發展出來的
一個 java library , 透過JNA我們可以很簡單的便可以連結到Native shared Library (c/c++的Library).
(Native shared Library , 就是可以動態載入的Library , 在Windows上為DLL檔 , 而在Linux上則為so檔)
要使用JNA , 我們首先要載入shared Library , 其方式如下:
public interface LibZfs extends Library {
LibZfs INSTANCE = (LibZfs) Native.loadLibrary("N_Zfs", LibZfs.class);
helloWorld(String str);
...
}
其中第一個參數就是我們想要載入的shared library , 而第二個參數則是我們要用來
代替該library而使用的別名.
要注意的是 , 若是在Linux中 , 第一個參數所對應到的so檔為 libN_Zfs.so ,
因為Jna在找文件時 , 會找前面有匹配lib的文件來做為so檔的辨識.
而helloWorld則是我們想要調用的function名稱.(必須要與shared library裡面的名稱相同)
接下來便可以在我們的Java program中調用該function:
LibZfs.INSTANCE.helloWorld("Hello World!");
ref : http://zhenaihua0213.blog.163.com/blog/static/50887766201129104611955/