java中使用c++編程

      java很強大,但是速度很慢,所以在很多方面都需要用到c++和java的混合編程。網上的步驟講解很詳細,這裏就不加贅述,添加我認爲比較重要的幾點東西,希望對大家有用。總的來說就一句話,寫一個java類,然後構建與之映射的c++頭文件。

一.流程:

1.配置NDK,生成jni文件夾。裏面的cpp文件,用來實現功能。Android.mk文件用來聲明cpp文件。之後的c++源文件,頭文件都放在這裏。

2.創建一個java類,在裏面寫上你要用的native方法。這個類的作用相當於我們開發時使用的接口,就當是中介吧,接下來的任務就是實現這些方法。

3.java到c++的映射。生成與上面的java類相聯繫的頭文件,方法有兩種。第一種是在終端生成,第二種是使用ant編程實現(方便實用)。最後生成的.h文件,就包含了java類裏面需要實現的方法接口,然後創建.cpp文件實現代碼,將頭文件包含進去即可。

4.通過上述方法,可以直接調用java類裏面的方法使用。 另外,也可以自己寫.h  .cpp文件,只要在Android.mk裏面聲明瞭,並且調用的時候加上“extern c”就可以了。

二.配置NDK

配置好路徑之後,添加native support,就會出現jni文件夾

三.生成頭文件

1.      在終端生成:進入./bin/classes 目錄下,通過 javah –jni 包名.類名     生成頭文件

3.      通過ant生成頭文件(我失敗了很多次,找到最後測試成功一種方法,build_headers.xml的代碼如下)

        自己創建build_headers.xml文件,使用ant打開,寫好之後在ant控制檯用添加進來。當在創建好連接的類裏面添加新方法時,只要雙擊控制檯裏面的目錄就可以更新。

<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== 
     2015-3-29 上午10:05:09                                                        

     NDKtest    
     description
                   
     Gloria                                                                
     ====================================================================== -->
<project name="NDKtest" default="BuildAllHeaders">
    <description>
            description
    </description>

    <!-- ================================= 
          target: BuildAllHeaders              
         ================================= -->
    <target name="BuildAllHeaders" >
    	<antcall target="GetIntHeader" ></antcall>
  
    </target>

    <!-- - - - - - - - - - - - - - - - - - 
          target: depends                      
         - - - - - - - - - - - - - - - - - -->
    <target name="GetIntHeader">
    <exec dir="${basedir}/bin/classes/" executable="javah">
    	                    <arg value="-d"/>
    	                    <arg value="${basedir}/jni/"/>
    	                    <arg value="-jni"/>
    	                    <arg value="com.wx.example.ndktest.GetInt"/>
    	 </exec>
    </target>

</project>

四.調用


自己動手操作一遍,遇到問題再解決就能學會了。我總結的不好,希望不吝賜教。

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