JNI是Java Native Interface的缩写,译为Java本地接口。它允许Java代码和其他语言编写的代码进行交互。可以再java中调用C/C++的代码。本文使用一个简单的示例演示JNI的使用。
我的Eclipse的工作目录为:D:\workspace
Eclipse的项目结构:
1.在java类中声明一个native方法,运行在bin下生产class文件
package com.example; public class jni_test { public native void sayHello();//声明本地方法 public static void main(String[] args) { } }
2.使用javah命令生成包含native方法定义的C/C++头文件
这里经常出错,注意包名和路径
图片文字错误更正:若不指定-d生成位置,则生成的头文件在此目录下
此时会在D盘下生成.h头文件
3.按照生成的C/C++头文件来写C/C++源文件
使用VS建立C++项目
把生成的头文件和jdk的include下的jni.h以及里面win32下的jni_md.h复制到c++项目内
在源文件下建立cpp文件
修改生成的头文件
4.将C/C++源文件编译成动态链接库
运行项目即可,可能会报错(我的报了这个错,一直以为不行,其实已经生成了dll)
如果在debug目录下生成了dll,则可以不理会此错误
注意
如果你是64为的系统,此时需要64位的动态链接库,则需要生成64位的dll,不然会报错
5.把动态链接库DLL放到PATH环境变量下
可以专门建立一个目录来存放动态链接库,再把该目录放到PATH环境变量下,这样便于管理
这里我们就把该Debug目录放进环境变量
此时需要重启Eclipse,因为Eclipse在每次启动时会加载类库
此时可以使用java代码来调用动态链接库
运行结果:
至此我们jni的简单入门实例就完成了。
相关推荐
Java JNI(Java Native Interface)是Java平台中一个重要的特性,它允许Java代码和其他语言写的代码进行交互。JNI自Java 1.1版本引入以来,已经成为Java开发者与底层系统交互的重要工具,尤其在需要调用C/C++库或者...
JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI常用于提升性能、调用系统库或者实现特定功能,例如图像处理、加密算法等。Android Studio...
jni快速入门实例,java文件里写了几个函数,参数包含了常用的数据类型、类、数组等。对应的有C的实现和C++的实现,并且两者混编在一起,生成一个so。有Makefile。基本上涵盖了jni开发用到的基本技术。原创资源。
### JNI的简单入门实例 JNI(Java Native Interface)是一种标准的接口规范,它允许Java代码与其他语言编写的代码进行交互,比如C、C++等。JNI对于开发高性能应用或者调用本地库非常有用。下面将根据提供的文件内容...
Android Studio的JNI(Java Native Interface)开发入门教程 JNI,全称为Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Android开发中扮演着重要角色,尤其当...
8. **调用Java方法**:本地代码可以通过JNI调用Java方法,包括静态方法、实例方法和构造方法。这涉及到`CallStaticVoidMethod`、`CallVoidMethod`、`NewObject`等函数。 9. **访问Java对象**:JNI允许本地代码访问...
- **JNI数据类型与转换**:详细介绍JNI的数据类型及其与Java类型之间的对应关系,以及如何进行类型转换。 3. **JNI高级主题**: - **内存管理和垃圾回收**:探讨如何在使用JNI时管理内存,尤其是在Java堆之外分配...
压缩包中的实例文档详细讲解了如何创建JNI项目,如何编写和调用本地方法,以及如何处理数据转换等问题,对于初学者来说是非常实用的学习材料。 通过学习和实践这些JNI编程资料,初学者可以掌握JNI的基本原理和操作...
在这个"Android jni 编程实例"中,我们将探讨如何在Android Studio环境下进行JNI开发,通过一个简单的入门demo来学习这个过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口,它允许Java代码...
这个入门实例将带你了解如何使用JNI在Java程序中调用C或C++的原生代码,以及如何处理返回的结果。 一、JNI基础概念 JNI是一种规范,它定义了Java虚拟机(JVM)与本地代码(如C、C++)之间的接口。通过JNI,Java...
3. **JavaVM**:这是Java虚拟机的接口,用于创建和管理Java虚拟机实例。 #### 五、JNI的使用注意事项 1. **内存管理**:由于C/C++没有自动的内存管理机制,因此在使用JNI时需要注意手动管理内存,防止内存泄漏。 2...
JNI是java调用C++程序的一种实现方法,网上有一些相关的资料,但不一定能适用,这个文档我在学习JNI时综合网上资料总结的,本人亲测能够实现,希望下载的网友有什么问题多多反馈,希望对学习JNI的朋友有所帮助
JNI的入门开发,其中包含我个人的理解和实例,肯定对大家有帮助、 很好的学习例子
在C#中,你可以通过创建一个`Bridge`实例并使用`Start`方法来初始化Java虚拟机(JVM)。然后,通过`CreateJavaProxy`或`CreateNetProxy`方法,你可以分别在Java中调用.NET对象或在.NET中调用Java对象。这种双向调用...
一个经典的入门示例是通过JNI实现的“Hello World”。这通常涉及在C或C++中编写本地方法,然后在Java中调用该方法来打印消息。此示例展示了如何声明本地方法,如何在本地代码中实现它,以及如何从Java调用本地方法。...
#### Java基础知识——JNI入门介绍(下) 1. **概念回顾**:回顾上一节中介绍的基础概念。 2. **深入讲解**:深入讲解JNI的工作原理和技术细节。 3. **实践案例**:通过实践案例来巩固所学知识。 #### Java调用...
通过学习和实践这个JNI入门Demo1.0,你可以掌握JNI的基本用法,包括声明`native`方法、生成头文件、编写C++代码以及构建和加载动态库。这将为你进一步探索Android的原生开发打下基础,比如使用C++提升性能、接入第三...
在Android开发中,JNI(Java Native Interface)和NDK(Native Development Kit)是两个关键的组件,它们允许开发者使用C/C++代码来增强应用程序的功能,提高性能,或者利用硬件的特殊功能。`adt-bundle`则是一个包含了...
- 本地方法栈:支持Java的本地接口,为JNI调用服务。 - 程序计数器:记录当前线程所执行的字节码的地址。 3. 执行引擎:负责解释和执行字节码,包括解释器和JIT(Just-In-Time)编译器。解释器逐条执行字节码,而...