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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JAVA 构建使用 Native 库

發布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA 构建使用 Native 库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????? Java 使用Native文件,一般分解為下面幾個步驟:

  • 在Java代碼中使用native關鍵字聲明一個本地方法
  • 運行javah,獲得包含該方法聲明的C語言頭文件(使用jni編程中的C函數名通常是相關于Java方法有一定的命名規則的,稍后會介紹,我們使用javah來幫助我們獲得該方法名)
  • 用C語言或C++實現我們所需要的功能
  • 生成共享庫文件,共享庫文件可以是windows風格的.dll文件,也可以是UNIX風格的.so文件
  • 為了確保虛擬機在第一次使用該類之前就會裝載這個庫,使用靜態初始化塊來加載
  • 操作步驟:

    1.CMD 切換到目錄

    cd D:\Works\Android\WorkspaceUnify\rsPolylabel\bin D:
    2.編譯頭文件
    javah -jni -classpath . -d ./jni rsPolylabel.Polylabel

    結果:生成h文件 rsPolylabel_Polylabel.h 到jni文件夾

    3.頭文件代碼描述
    /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class rsPolylabel_Polylabel */#ifndef _Included_rsPolylabel_Polylabel #define _Included_rsPolylabel_Polylabel #ifdef __cplusplus extern "C" { #endif /** Class: rsPolylabel_Polylabel* Method: helloWishchinJni* Signature: ()V*/ JNIEXPORT void JNICALL Java_rsPolylabel_Polylabel_helloWishchinJni(JNIEnv *, jclass);#ifdef __cplusplus } #endif #endif

    5.利用Vs生成工程

    使用VS建立一個Dll工程,根據頭文件編寫相應的CPP文件,在包含目錄中添加目錄:

    C:\Program Files\Java\jdk1.8.0_152\include

    C:\Program Files\Java\jdk1.8.0_152\include


    7.載入動態庫

    網上的方法,把儲存dll文件的目錄加入到系統目錄Path,然并卵!!!

    在Eclipse程序中,運行System.out.println( System.getProperty("java.library.path"));

    此行運行完成,輸出目錄

    D:\Works\Android\WorkspaceUnify\rsPolylabel\lib\x64;

    D:\Works\Android\WorkspaceUnify\rsPolylabel\lib\hdf5

    因此把dll文件放入 lib\x64 目錄,載入成功。


    6.編寫代碼

    在CPP文件中添加頭文件包含和JNI包含

    #include <jni.h> /* Header for class rsPolylabel_Polylabel */ #include "rsPolylabel_Polylabel.h"

    此后按照一般的方法生成動態庫即可


    7.引入動態庫

    測試成功!


    總結

    以上是生活随笔為你收集整理的JAVA 构建使用 Native 库的全部內容,希望文章能夠幫你解決所遇到的問題。

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