Java(JNA)調用C++動態庫(dll)

來源:互聯網
上載者:User

標籤:通過   樣本   檔案   ref   src   jna   path   get   win   

JNA(Java Native Access):是建立在JNI之上的Java開源架構,SUN主導開發,用來調用C、C++代碼,尤其是底層的庫檔案(windows中叫dll檔案,linux下是.so檔案)。

先注意幾個問題:

1.下載jna.jar包,jna-platform.jar 可以不要,但是有的話對代碼的調試是有協助的;platform.jar對於jna.jar是一種補充和擴充,jna.jar相當於核,platfrorm.jar相當於增量外掛程式。

2.動態連結程式庫編譯時間的平台。如果是通過x86平台編譯,那麼就只能使用32位的jdk環境載入,如果是64位jdk就必須使用x64平台編譯動態庫;不然,即使後面編碼,動態連結程式庫的路徑都沒有問題,調用還是會報錯。

3.調用時多注意dll的位置。

代碼開始:

對於Java來說,一般都是調用已經產生好的dll動態庫。所以LZ並沒有貼動態庫的產生。若需要,百度一下即可。

public class JNATestDll {    public interface Dll extends Library{                Dll instance = (Dll) Native.loadLibrary("HidComm", Dll.class);        public boolean LoadHidComm();        public boolean HidWriteData(String buf,int len);    }    public static void main(String[] args) {        boolean load = Dll.instance.LoadHidComm();        if (load) {            String buf = "weixin://wxpay/bizpayurl?pr=FCT5hbP";            int len = buf.length();            boolean ewm = Dll.instance.HidWriteData(buf, len);            System.out.println(ewm);        }    }}

這是普通的Java項目的調用測試,LZ是把dll動態庫放到項目的根目錄下的,就是選中項目然後複製就ok了。

下面這個例子是web項目中調用dll動態庫樣本:

public class JnaCallDllService {    private static String path = System.getProperty("user.dir").concat(File.separator).concat("lib").concat(File.separator);         public interface SerialAndDllNew extends Library {        SerialAndDllNew instance = (SerialAndDllNew)Native.loadLibrary(path.concat("zzcard"), SerialAndDllNew.class);                public int Icc_OpenComPort(int nPort, String gate, int baud, int timeout);                public int Icc_PowerOn(int card_no,ByteByReference atr,ShortByReference ictype);    }}

path部分就是動態庫的路徑,因為LZ的應用是要放到linux環境下部署的。LZ是把動態庫放到lib下的,這樣方便部署,簡單方便。如所示:

LZ是先測試後,再在項目中運用,上面兩種方式均成功。

Java(JNA)調用C++動態庫(dll)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.