標籤:欄位 相對 system base text ace 平台 環境 連結
對於Jni(Ndk) 很多人應該都有印象,Android的ndk接觸到的機會相對會比較多,本例子以android平台為例,pc端的話就以簡單的windows為例, 編碼完用vs 或是 gcc進行編譯成dll檔案,扔到系統system32 , 就是環境變數配置的檔案夾底下,linux 可能也差不多是這個意思,剩下的代碼就跟android一樣,進行載入這個動態連結程式庫即可.
這裡就不做贅述,直接進入android平台的ndk開發,這裡就主要講下,Java層如何持久化c c++ 對象,情境可以是這樣,假設你在c/c++層建立了一個對象(結構體),你下次還想繼續使用怎麼辦,當然是要儲存它了,那要怎麼儲存,這就要考慮怎麼進行持久化它了,翻翻java或是android 很多原始碼裡面總會對一個long對象進行放置play.
例如:
沒錯,看似沒什麼特別的一個欄位,其實就是底層的一個c/c++對象,比片裡的mNativeBitmap 其實是c/c++裡面的一個Bitmap對象,需要它時會在底層進行轉型,可能說起來大家有點不明白 這裡我就用代碼來說明下.
首先建立個 native 類:
接著用工具產生標頭檔聲明,這個自行百度解決,這裡不做贅述,現在來展示下最主要的c/c++代碼, 這裡我使用c++編碼.
首先我建立了一個類,c裡面就是結構體啦,用c++的文法建立對象就是用new了,那c就是malloc了,這個就不多做說明, 這裡比較主要的兩段代碼時
(jlong)person; 和 (Person *)nativeId;
這兩段代碼分別都是轉型,一個是轉換成jlong(也就是java裡的long類型),從java層調用c++層接著返回jlong給java層的一個long對象進行持久化.使用時,在將這個long傳到c++層進行強轉成Person * , 這樣就可以繼續使用了. 這是一段很簡單的代碼, 但是確實很實用 ~
原始碼地址:http://download.csdn.net/detail/jue_dui_zhen_li/9570118
出自:http://blog.csdn.net/jue_dui_zhen_li/article/details/51852438
(轉)java 層調用Jni(Ndk) 持久化c c++ 對象