JAVA 構建使用 Native 庫__人形機器人

來源:互聯網
上載者:User

       Java 使用Native檔案,一般分解為下面幾個步驟:

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

操作步驟:

1.CMD 切換到目錄

cd D:\Works\Android\WorkspaceUnify\rsPolylabel\binD:

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 __cplusplusextern "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.引入動態庫

測試成功。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.