博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android NDK入门实例 计算斐波那契数列一生成jni头文件
阅读量:5898 次
发布时间:2019-06-19

本文共 1694 字,大约阅读时间需要 5 分钟。

最近要用到Android NDK,调用本地代码。就学了下Android NDK,顺便与大家分享。下面以一个具体的实例计算斐波那契数列,说明如何利用Android NDK,调用本地代码。以及比较本地代码与java代码的效率。

开发环境搭建见以前写的XP下搭建Android开发环境和XP下搭建AR开发环境,具体过程不再重复。这里主要介绍利用Android NDK调用本地代码,实现全过程。

一、新建Android Application

其它默认,Next直至Finish完成新建工程。

二、使用javah命令生成供本地调用的头文件

1.新建java文件(class),文件FibLib.java

package com.example.fiblib;public class FibLib {	//java的递归实现		public static long fibJ(long n){			if(n <= 0)				return 0;			if(n==1)				return 1;			return fibJ(n-1) + fibJ(n-2);		}	//java的迭代实现		public static long fibJI(long n){			long previous = -1;			long result = 1;			for(long i=0;i<=n;i++){				long sum=result+previous;				previous = result;				result = sum;			}			return result;		}	//本地实现在这里定义本地C代码的函数原型		static {			System.loadLibrary("fib");		}		public static native long fibN(int n);	//本地的递归实现		public static native long fibNI(int n);	//本地的迭代实现	}

2.编译、运行

现在编译运行主要是在过程bin目录下生成类文件,用于javah命令生成jni头文件。运行后会在bin下生成class目录,下面在dos下生成jni头文件。

开始没有用-classpath classes 指明类所在的位置,提示错误,加上-classpath classes选项就ok了,可以看到成功生成了com_example_fiblib_FibLib.h。下面贴出com_example_fiblib_FibLib.h代码,这个自动生成的,不需要修改。

/* DO NOT EDIT THIS FILE - it is machine generated */#include 
/* Header for class com_example_fiblib_FibLib */#ifndef _Included_com_example_fiblib_FibLib#define _Included_com_example_fiblib_FibLib#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_fiblib_FibLib * Method: fibN * Signature: (I)J */JNIEXPORT jlong JNICALL Java_com_example_fiblib_FibLib_fibN (JNIEnv *, jclass, jint);/* * Class: com_example_fiblib_FibLib * Method: fibNI * Signature: (I)J */JNIEXPORT jlong JNICALL Java_com_example_fiblib_FibLib_fibNI (JNIEnv *, jclass, jint);#ifdef __cplusplus}#endif#endif

 

 

 

你可能感兴趣的文章
java解析虾米音乐
查看>>
rails将类常量重构到数据库对应的表中之三
查看>>
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
查看>>
mysql 多行合并函数
查看>>
【案例】RAID卡写策略改变引发的问题
查看>>
[Django学习]如何得到一个App
查看>>
第四十八讲:tapestry 与 淘宝kissy editor编辑器带图片上传
查看>>
Linux/Centos 重置Mysql root用户密码
查看>>
CALayer的那些事(二)
查看>>
[C语言]unicode与utf-8编码转换(一)
查看>>
linux进程管理及kill命令详解
查看>>
二:Unit 4
查看>>
影响英语单词拼写的6大因素
查看>>
shell if
查看>>
利用PDO导入导出数据库
查看>>
CentOS 6.5 部署redmine 2.42
查看>>
DDR3
查看>>
分支 统计字数
查看>>
艾级计算机的发展与挑战
查看>>
我的友情链接
查看>>