JNI (Java Native Interface) 廣泛的應用在Android開發上,JNI基本上就是搭建Java與C++的橋梁。本篇文章實作JNI的簡單範例。

 

開發環境

Windows 7

Eclipse

JDK

VC Express 2010

 

第一步,建立一個新的類別檔

開啟Eclipse,新增一個Java專案(MyJniTest)。內容如下圖,我設定了一個native function叫print()。print的實作我會放在C++中。主程式main會去呼叫print()。底下有個loadLubrary("XXX")是等等我們要把C++的程式build成.dll(或.so)要餵給Java用的,其中"XXX"是dll(或.so)的名稱。

JNI01

 

最後稍微run一下,不會成功但是少bin資料夾下會產生.class檔

JNI02

 

第二步,建立hader

開啟cmd,執行javah的指令,就會產生剛剛.class檔對應的JNI hader檔。

例如: javah -jni tw.beitou.walker.MyJniTest

其中,MyJniTest是類別名稱,而tw.beitou.walker是包名(package name),如果剛剛在Eclipse專案新增類別有填入包名就一定要輸入。

JNI03

 

產生Jni的hader檔(.h),等等就要用這來實作C++部分。

JNI04

 

第三部,實作native function

開啟VC,開一個新專案,注意輸出不要.exe,要改成.dll喔。

JNI07

 

開一個.cpp檔,載入剛剛的tw_beitou_walker_MyJniTest.h,在.cpp檔實作函式

JNIEXPORT void JNICALL Java_tw_innojoy_slot_MyJniTest_print
(JNIEnv *, jobject);

我簡單的讓他印 Hello World 5678 ,等等看執行Java時會不會出現嚕。

JNI05

 

build 一下,產生.dll檔。

JNI06

 

 

Step4. 執行

將.dll放入Java專案中,再run這個Java專案。就可以看到執行結果如下:

JNI10  

 

透過Jni,無論開發Java或是Android無限的可能又更大嚕!

 

加油加油!

 

 

 

 

 

    

arrow
arrow
    文章標籤
    java jni
    全站熱搜

    巴比特 發表在 痞客邦 留言(0) 人氣()