java中JNI的簡單使用方法介紹(詳細)
這篇文章帶給大家的內容是關於JNI的簡單使用方法介紹(詳細),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
JNI可以讓我們在java程式碼中呼叫本地庫的功能。
下面記錄JNI簡單的使用方法
1、建立java端介面
public class JNIIterface { // 导入最终生成的dll文件 static { System.loadLibrary("JNIDemo"); } // 声明dll文件中实现的接口 public native int MyMethod(); public native int add(int x, int y); }
2. 產生介面對應的C的頭檔
上面已建立的JNIIterface類,JNIIterface .class檔案的路徑:\JNIDemo\bin\base\JNIIterface .class
在工程目錄下的bin目錄下執行指令:javah -classpath . -jni base.JNIIterface
接著會在\JNIDemo\bin\目錄下產生base_JNIIterface.h檔案
3. 使用visual studio編寫介面的實作
建立C工程,具體步驟如下:
第一步:
第二步:
第三個步驟:
匯入需要的頭檔
將上面第二步驟產生的頭文件,以及jdk根目錄下include目錄下的jni.h和
include的win32目錄下的jni_md.h檔案拷貝到工程目錄下的頭檔目錄下
建立功能實作檔案
在工程目錄下來源檔案上右鍵,並點選新增- 》類別
並撰寫以下程式碼:
#include "base_JNIIterface.h" #include "jni.h" #include <stdio.h> JNIEXPORT jint JNICALL Java_base_JNIIterface_MyMethod (JNIEnv *, jobject){ printf("成功实现JNI测试DEMO"); return 0; } JNIEXPORT jint JNICALL Java_base_JNIIterface_add (JNIEnv *, jobject, jint a, jint b){ return a + b; }
4. 產生dll檔案
在工程目錄中的「解決方案」上右鍵,選擇屬性,然後如下圖所示構成項目
然後編譯工程後,會在工程目錄下的Release目錄下成成dll檔案
5. 將dll檔案配置到java工程
首先向dll檔案放在java工程根目錄下的lib目錄下
然後按照以下步驟將dll檔案作為Native Library加入工程
編輯上圖所示的Native Library Location,然後在彈出的介面選擇Native Library所在的資料夾:
6. 編寫測試類,檢證JNI是否成功應用public class HelloJNI {
public static void main(String[] args) { JNIIterface hw = new JNIIterface(); int t = hw.add(3, 7); int s = hw.MyMethod(); System.out.println(t); System.out.println(s); } }
運行後的測試結果如下:
0 0 成功??JNI??DEMO
上面就是記錄了使用JNI最基本的步驟。
對於如何使用已經寫好的第三方dll檔案的功能,例如係統的dll文件,還需要進行深入探索。
以上是java中JNI的簡單使用方法介紹(詳細)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

在使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名以構建查詢條件,是一個常見的難題。本文將針...
