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>

四.调用


自己动手操作一遍,遇到问题再解决就能学会了。我总结的不好,希望不吝赐教。

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