1. 程式人生 > >Java呼叫C++編寫的動態庫(JNI)

Java呼叫C++編寫的動態庫(JNI)

1. 在eclipse裡利用java建立一個類,在類中加入帶有native的方法(eclipse建立的類會自動新增class在bin目錄下)
這裡寫圖片描述
2.利用javah命令生成本地方法的c++標頭檔案。進入到工程bin目錄下,按住shift,並右擊,選擇 “在此處開啟命令視窗”,進入命令視窗;輸入 “javah -classpath . -jni 包名加上類名”,在bin目錄下生成包名_類名.h標頭檔案
這裡寫圖片描述
注:
有些部落格上寫直接“javah 包名加上類名 ”就可以,但我在做的過程中他顯示找不到相關的類檔案,暫時還不知道怎麼回事
-classpath 用於裝入類的路徑
-jni 表示生成jni的標頭檔案
3.

利用VS生成動態庫(新建專案,後續選擇dll)
4. 拷貝jdk–>include中的jni.h,jni_md.h,和利用javah生成的標頭檔案這三個標頭檔案到vs生成的專案中,這是出現了這裡寫圖片描述錯誤,標頭檔案是複製到本地檔案的,不是庫檔案了,要將<>改為“”。
5. 利用C/C++編寫實現本地方法。
這裡寫圖片描述
實現後生成dll動態庫。
6. 將dll動態庫拷貝到工程下(也可放到其他地方,我選擇的是工程目錄下),設定一下:
這裡寫圖片描述
7. 編寫測試類及進行測試
這裡寫圖片描述
很幸運成功了,在這個過程中暫時沒有出現問題,以後用的過程中出現問題後再補充。
補充:
JNI:Java Native Interface,是java提供的一種通用介面,用於java程式碼與本地化程式碼互動。
本地化程式碼,就是直接編譯成語機器相關的二進位制程式碼