close

1. 首先在前一篇 [Android] 3-1 在Eclipse安裝NDK並使用JNI呼叫C++ 的基礎下

從步驟19開始, 在jni的資料夾點選滑鼠右鍵, 然後New -> File 點選下去

01.png

 

2. 為你的檔案命名,附檔名要取.c, 因為要測試c語言, 這邊以C_Lib.c為例, 之後按下Finish

02.png

 

3. 打開新增的檔案, include jni的核心 jni.h

03.png

 

4. 按照命名規則建立你的要回傳方法, 和C++不同, 這邊不用extern C

而函數的名稱也是自行定義, 這邊以testCinJNI為例

04.png

 

5. 接著加入程式主體, 回傳一個字串 return (*env)->NewStringUTF(env, "Hello from JNI C");

注意的是1. 和C++不同, return env->NewStringUTF("Hello from JNI CPP");

2. NewStringUTF, 會無法被引索, 這是一個bug, 需要等待Android開發環境的更新

可以參考http://stackoverflow.com/questions/15899813/eclipse-method-newstringutf-could-not-be-resolved

這邊的文章討論來處理, 但不算是根本的解決

05.png

 

6. 根據文章採取的治標方法, 用滑鼠右鍵點選TestNDK,

然後滑鼠左鍵點選Properties

06.png

 

7. 點開C/C++ General, 點選Code Analysis, 然後勾選 Use Project settings,

下拉選單找到Method cannot be resolved, 將他取消掉, 按下Apply 之後在按下OK,

這動作會讓你以後都要靠自己檢察方法是否可以被找到

07.png

 

8. 重新啟動你的Eclipse, 之後就可以發現錯誤消失了

08.png

 

9. 接著要設定你的程式連結, 點開Android.mk, 將原本cpp的地方複製,

接著再下面改成你要被呼叫的名稱和你建立的.c檔, mk檔的細節在這邊並不探討

09.png

 

10. 回到你java的主程式, 在static建立Lib, 然後用native宣告方法名稱

之後再把原本用C++呼叫的地方改成用你剛宣告的方法

10.png

 

11. 編譯後執行就可以看到結果了

11.png  

arrow
arrow
    全站熱搜

    RX1226 發表在 痞客邦 留言(0) 人氣()