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>

四.调用


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值