Android JNI(实现自己的JNI_OnLoad函数)

实现JNI中本地函数注册可以两种方式: (1)采用默认的本地函数注册流程。 (2)自己重写JNI_OnLoad()函数。(本文介绍)(Android中采用这种) Java端代码: package com.jni; public class JavaHello { public static native String hello(); static { // load library: libte

Java本地调用JNI使用规范详解

一、 JNI概述 JavaNative Interface的缩写,中文为Java本地调用。从Java1.1开始,JNI即成为Java标准的一部分。 JNI设计的目的是为了允许Java代码与其他语言进行交互。但这样做通常会导致丧失平台可移植性,通常是在特定的需求下进行,例如使用旧的其他语言的库、需要获得Java类库不支持的某种基于具体平台的特性、大量数学计算性能优化等。 二、 JNI数据类型和数据结

JNI静态方法和非静态方法

在java中声明的JNI的静态方法(native static)和非静态方法,对于底层的C/C++代码来说是有区别的。 JNI函数的参数也由三部分组成: 首先是JNIEnv*,是一个指向JNI运行环境的指针; 第二个参数随本地方法是静态还是非静态而有所不同一一非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其Java类的引用; 其余的参数对应通常Java方法的参数,参数类型

c语言结构体用法

结构(struct)      结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。  结构中可以使用不同的数据类型。      1. 结构说明和结构变量定义      在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此,  象其它  类型的变量一样, 在使用结构变量时要先对其定义。      定义结构变量的一般格式为:       struct 结构名     

NDK的配置

很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单的android应用。 一:什么是NDK? NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和 java 应用一起打包成apk。这些工具对开发者的帮助是巨大的。下载地址:http://developer.android.co

Failed to load JavaHL Library.

以前使用的电脑是32位的,安装的svn可以正常使用,但是现在的电脑室64位的,安装好svn后,把项目提交到svn的过程中,总是弹出来一个错误的对话框: Failed to load JavaHL Library. These are the errors that were encountered: 从网上查看了一下解决办法, 1.选择window—>preferences-&g

windows下androidNDK环境配置

一:什么是NDK?   NDK 提供了一系列的工具,帮助开发者快速开发C(或C )的动态库,并能自动将so 和java 应用一起打包成apk。这些工具对开发者的帮助是巨大的。   NDK 集成了交叉编译器,并提供了相应的mk 文件隔离CPU、平台、ABI 等差异,开发人员只需要简单修改mk 文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK 可以自动

JNI 使用,原来我一直错

转自:  http://www.ibm.com/developerworks/cn/java/j-jni/ 最好看原版吧,排版非常好,这里粘贴是为了备份一下!   Java 环境和语言对于应用程序开发来说是非常安全和高效的。但是,一些应用程序却需要执行纯 Java 程序无法完成的一些任务,比如: JNI 的发展 JNI 自从 JDK 1.1 发行版以来一直是 Java 平台的一部分,并且

JNI原理研究

这个部分之所以放在我的博客中,因为比较难,自己的功力不见得很够,所以写起来有点天马行空。 如果其他朋友觉得有用就给个赞吧。 1,JNI调用中的JNIEnv是什么? 要回答这个问题,我们必须研究源码 在jni.cpp 中有JNIEnv* dvmCreateJNIEnv(Thread* self)函数, 这个函数的作用是什么呢?创建JNIEnv,我们来看函数实现 JNIEnvExt* newEnv =