Android應用的跨語言調用小結

    最近在搞客戶端應用,對這幾天學到的東東做下小結。

1、Android是基於linux kernel,用C來寫的部分代碼。

2、Android應用程序是用java語言來寫的,開發工具一般用eclipse。

3、Android應用程序如果想要調C寫的代碼怎麼辦?

     這個也比較簡單,我們先回想下在C#裏是如何調C++的,想起來了一個關鍵詞,就是DLLImport,具體的用法爲:【DLLImport("user32.dll")】:告訴.NET的公共語言運行時CLR,我想調用的非託管代碼在user32.dll中,幫我把這個DLL加載到內存中來,然後採用public static extern 返回值 方法名(參數),可以調用外部dll定義的方法了,不過,還有一個比較痛苦的事就是,不同語言下的類型轉換,譬如:指針、數組的轉換,要一個方法一個方法地調試了。

    在Android平臺上調C寫的代碼,道理、過程也差不多,只不過,也得破費一翻周折,先普及下linux上的相關知識:

    .c--C語言代碼文件

    .cpp-C++語言的代碼文件

    .h-C或C++程序的頭文件

    .o --程序目標文件:就是源代碼編譯後但未進行鏈接的那此中間文件,相當於windows平臺下的.obj文件。

    .a--靜態鏈接庫文件,相當於windows平臺下的.lib文件 。一般需要頭文件,.h文件才能調用。

    .so類庫文件。

    基礎知識瞭解了,再理一個轉換的過程:

    a)首先要將c代碼放到linux下(注:windows上也有linux慮擬機工具),編譯成.a或.so文件。

    b)在eclipse工具裏就可以直接加載.a和.h文件,或者直接調成.so文件就可以編譯。

    c)在直接調成方法之後,也還有一件事就是:要進行Java Native Interface轉換,跟上面提到的DLLImport類似。

   

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章