使用Java調用dll動態鏈接庫

一:什麼是dll?

DLL(Dynamic Link Library)文件爲動態鏈接庫文件,又稱“應用程序拓展”,是軟件文件類型。在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可使用多個DLL文件,一個DLL文件也可能被不同的應用程序使用,這樣的DLL文件被稱爲共享DLL文件。
寫成dll文件大多是用C、VB、Delphi語言編寫的,具體如何寫就不考慮了,有現成的就行了。

二:Java語言該如何調用dll?

採用JNative技術爲例:

首先將要調用的dll引入本地工程中:
1. 首先下載JNative.jar包,將jar包導入工程中;
2. 然後找到JNative.jar包中的JNativeCpp.dll(在windows環境中,Linux環境中用libJNativeCpp.so)
3. 接着將 JNativeCpp.dll 和 要引入的dll文件 放入C:\Windows\System32 目錄下;以及 jdk的bin目錄下(因爲dll文件中會用到.dat,.lib文件);如果是web動態工程用到Tomcat,還需要放到Tomcat的bin目錄下;
4. 還有一種方法是將他們直接放在本地工程中,加載本地文件;右擊工程—Built Path—Source—Web App Libaries—Native library location:(none) — edit,選擇本地放的dll文件夾就可以了。

引入完後,開始寫Java代碼:
在程序中加載dll文件有兩種寫法:
①:loadLibrary方法: 把dll文件拷貝到C:\Windows\System32目錄 下, 引用時,只需要寫dll文件名字即可。

System.loadLibrary("ZCDogChk"); // ZCDogChk 爲dll文件名字

②: load方法: 寫dll文件的完整路徑

System.load("D:\\RegisterPlatform\\ZCDogChk.dll");

通過System.getProperty(“java.library.path”)查看路徑位置

System.out.println(System.getProperty("java.library.path"));

// “ZCDogChk” 爲dll文件名, “fChkDogRegNumZC” 爲要調用的函數名

JNative jNative = new JNative("ZCDogChk", "fChkDogRegNumZC");
jNative.setRetVal(Type.STRING);  // 設置調用後的返回值類型
jNative.setParameter(0, str);  //參數下標是從0開始
jNative.getFunctionName();    //dll 函數名   
jNative.getDLLName();   //dll文件名
jNative.invoke();  //執行dll方法
jNative.getRetVal(); //獲取返回結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章