日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JNI的方式调用DLL(SO)(上)

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JNI的方式调用DLL(SO)(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 最近有個項目要調用原有的DLL文件,本來準備使用JNA,可是客戶不同意,非要使用JNI的方式。萬般無奈之下,只能重新使用JNI,現將JAVA調用動態鏈接庫的一般方法總結如下。

????? JNI是Java Native Interface(JAVA本地調用)的縮寫。從Java1.1開始,Java Native Interface(JNI)標準成為java平臺的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它并不妨礙你使用其他語言,只要調用約定受支持就可以了。

????? 使用JNI調用DLL文件的步驟一般有以下幾步:

???????? 1、編寫帶有native聲明的方法的java類

???????? 2、使用javac命令編譯所編寫的java類

???????? 3、使用javah命令編譯成頭文件?

???????? 4、使用C/C++實現本地方法(包含第3步生成的頭文件)

???????? 5、將C/C++編寫的文件生成動態連接庫

????? 下面將通過實例詳細介紹上面5步的具體實現

–> 編寫帶有native聲明的方法的java類,代碼如下:

View Code 1 package com.wanggc.jni; 2 3 public class MyJniNativeMethods { 4 /** 5 * 取最大值。 6 * 7 * @param data1 8 * 數據1 9 * @param data2 10 * 數據2 11 * @return 12 */ 13 public native int getMaxData(int data1, int data2); 14 15 /** 16 * 向某人問好。 17 * 18 * @param name 19 * 人名 20 * @return 21 */ 22 public native String getGreeting(String name); 23 24 /** 25 * 加載動態鏈接庫 26 */ 27 static { 28 System.loadLibrary("testJni"); 29 } 30 31 /** 32 * 入口主函數。 33 * 34 * @param args 35 */ 36 public static void main(String[] args) { 37 MyJniNativeMethods jniTest = new MyJniNativeMethods(); 38 // 調用第一個本地方法得到兩個數中的最大值 39 int maxData = jniTest.getMaxData(100, 150); 40 System.out.println(maxData); 41 42 // 調用第二個本地方法想某人問好 43 String hello = jniTest.getGreeting("王國成"); 44 System.out.println(hello); 45 } 46 }

????? 13行和22行包含了兩個本地方法,getMaxData和getGreeting,注意本地方法只需有方法名,不需要方法體。需要使用native關鍵字修飾。27-29行用于加載動態鏈接庫。注意DLL文件不要后綴,只要名稱就可以了。

–> 使用javac命令編譯所編寫的java類,如果是用eclipse編寫的代碼,不須使用此命令,使用project菜單的clean選項編譯一下就可以了。

–> 使用javah命令編譯成頭文件?

???? 編譯好class文件后,打開CMD窗口,轉到bin目錄,運行

轉載于:https://www.cnblogs.com/gulvzhe/archive/2012/04/29/2476460.html

總結

以上是生活随笔為你收集整理的JNI的方式调用DLL(SO)(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。