文档章节

android JNI调用C,C++

陈洪波
 陈洪波
发布于 2014/06/13 05:26
字数 273
阅读 109
收藏 0

android环境下cdt的安装和NDK的配置也就不说了,有很多这样的博客文章进行讲解,现在我要说的就是通过JNI来调用C函数和C++函数。

首先,新建普通的android程序。我们姑且命名为JNITest

新建完成之后,即为普通的android项目

现在就开始我们的JNI之旅:

(一)、JNI调用C函数

1:在项目目录下新建一个jni文件夹如图

2:在jni文件夹下新建一个.c文件,姑且命名为hello.c

3:键入以下代码(后面会有讲解)

#include <jni.h>

jstring Java_com_example_jnitest_MainActivity_HelloJni(JNIEnv *env,jobject obj)

{

  return (*env)->NewStringUTF(env,"Hello World!!");

}


备注:

(1)、头文件  #include <jni.h>

头文件位置定义在 android-ndk-r9c\platforms\android-5\arch-arm\usr\include目录下

含有以下方法:

jstring     (*NewString)(JNIEnv*, const jchar*, jsize);

jsize       (*GetStringLength)(JNIEnv*, jstring);

const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*);

void        (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*);

jstring     (*NewStringUTF)(JNIEnv*, const char*);

jsize       (*GetStringUTFLength)(JNIEnv*, jstring);

(由于文字限制,下一篇接着讲解)


© 著作权归作者所有

陈洪波
粉丝 2
博文 76
码字总数 1552
作品 0
济南
程序员
私信 提问
JNI和NDK的区别

NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等 java调用这样实现就需要用JNI(Java Native...

长平狐
2013/01/06
62
0
android JNI使用方法

经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下。android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和C/C++代码。其中C/C++代码...

linuxhunter
2011/12/26
0
2
JNI和NDK的区别

NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等 java调用这样实现就需要用JNI(Java Native...

鉴客
2012/03/09
181
0
JNI和NDK的区别

NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等 java调用这样实现就需要用JNI(Java Native...

晨曦之光
2012/03/01
1K
0
Android NDK开发简介

最近由于项目的需要,使用到了Android的NDK技术,对项目核心算法跨平台的移植。简答而言,就是使用C对原来的算法进行了改进,并集成到原来的app项目里。 从前的项目一直没有使用NDK进行开发的...

zhiweiofli
2013/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 你一辈子都不可能跟她这么亲近

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享George Benson的单曲《Six Play》: 《Six Play》- George Benson 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
48分钟前
332
8
优雅的关闭Spring Boot

优雅的关闭Spring Boot 1、实现 TomcatConnectorCustomizer 接口拿到Tomcat的连接获取 Tomcat连接池 2、实现 ApplicationListener<ContextClosedEvent> 监听服务器关闭事件,注册JVM钩子函数...

sowhat
今天
2
0
Python3-Web开发

简介 Web开发框架 什么是Web框架? Web应用程序框架或简单的Web框架表示一组库和模块,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 virtualenv是一个虚拟...

wuxinshui
今天
6
0
使用技媒体实践编写发布博客

技媒体实践博客 CSDN OSChina 知乎 简书 思否 掘金 51CTO

晨猫
今天
4
0
Lucene

1、什么是全文检索 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固...

榴莲黑芝麻糊
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部