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/

arrow
arrow
    全站熱搜

    JerryCheng 發表在 痞客邦 留言(0) 人氣()