`
hm4123660
  • 浏览: 282918 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Dea4ce76-f328-3ab2-b24a-fb268e1eeb75
数据结构
浏览量:70130
社区版块
存档分类
最新评论

java jni详细入门实例

    博客分类:
  • JNI
阅读更多

         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的简单入门实例就完成了。
 

  • 大小: 5.5 KB
  • 大小: 5.4 KB
  • 大小: 8 KB
  • 大小: 4.9 KB
  • 大小: 14.5 KB
  • 大小: 19 KB
  • 大小: 21 KB
  • 大小: 2.5 KB
  • 大小: 4.7 KB
  • 大小: 8.7 KB
  • 大小: 10.2 KB
  • 大小: 9.9 KB
  • 大小: 8.5 KB
  • 大小: 20.3 KB
  • 大小: 44.2 KB
  • 大小: 12.3 KB
5
3
分享到:
评论
2 楼 clever101 2018-04-09  
     兄弟,能提供一个有参数传递的例子吗?  
1 楼 haifengwuch 2015-04-29  
强大不错。

相关推荐

    java jni从入门到精通

    Java JNI(Java Native Interface)是Java平台中一个重要的特性,它允许Java代码和其他语言写的代码进行交互。JNI自Java 1.1版本引入以来,已经成为Java开发者与底层系统交互的重要工具,尤其在需要调用C/C++库或者...

    Android Studio JNI编程入门实例

    JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI常用于提升性能、调用系统库或者实现特定功能,例如图像处理、加密算法等。Android Studio...

    jni快速入门实例

    jni快速入门实例,java文件里写了几个函数,参数包含了常用的数据类型、类、数组等。对应的有C的实现和C++的实现,并且两者混编在一起,生成一个so。有Makefile。基本上涵盖了jni开发用到的基本技术。原创资源。

    jni的简单入门实例

    ### JNI的简单入门实例 JNI(Java Native Interface)是一种标准的接口规范,它允许Java代码与其他语言编写的代码进行交互,比如C、C++等。JNI对于开发高性能应用或者调用本地库非常有用。下面将根据提供的文件内容...

    Android Studio JNI开发入门教程

    Android Studio的JNI(Java Native Interface)开发入门教程 JNI,全称为Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Android开发中扮演着重要角色,尤其当...

    JNI.zip_java jni_jni

    8. **调用Java方法**:本地代码可以通过JNI调用Java方法,包括静态方法、实例方法和构造方法。这涉及到`CallStaticVoidMethod`、`CallVoidMethod`、`NewObject`等函数。 9. **访问Java对象**:JNI允许本地代码访问...

    Java本地接口(JNI)编程指南和规范

    - **JNI数据类型与转换**:详细介绍JNI的数据类型及其与Java类型之间的对应关系,以及如何进行类型转换。 3. **JNI高级主题**: - **内存管理和垃圾回收**:探讨如何在使用JNI时管理内存,尤其是在Java堆之外分配...

    jni.rar_JNI编程_java jni_jni_site:www.pudn.com

    压缩包中的实例文档详细讲解了如何创建JNI项目,如何编写和调用本地方法,以及如何处理数据转换等问题,对于初学者来说是非常实用的学习材料。 通过学习和实践这些JNI编程资料,初学者可以掌握JNI的基本原理和操作...

    Android jni 编程实例

    在这个"Android jni 编程实例"中,我们将探讨如何在Android Studio环境下进行JNI开发,通过一个简单的入门demo来学习这个过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口,它允许Java代码...

    jni 入门实例

    这个入门实例将带你了解如何使用JNI在Java程序中调用C或C++的原生代码,以及如何处理返回的结果。 一、JNI基础概念 JNI是一种规范,它定义了Java虚拟机(JVM)与本地代码(如C、C++)之间的接口。通过JNI,Java...

    有关java jni详解

    3. **JavaVM**:这是Java虚拟机的接口,用于创建和管理Java虚拟机实例。 #### 五、JNI的使用注意事项 1. **内存管理**:由于C/C++没有自动的内存管理机制,因此在使用JNI时需要注意手动管理内存,防止内存泄漏。 2...

    JNI快速实现入门(java调用C++程序的方法)

    JNI是java调用C++程序的一种实现方法,网上有一些相关的资料,但不一定能适用,这个文档我在学习JNI时综合网上资料总结的,本人亲测能够实现,希望下载的网友有什么问题多多反馈,希望对学习JNI的朋友有所帮助

    JNI的入门开发

    JNI的入门开发,其中包含我个人的理解和实例,肯定对大家有帮助、 很好的学习例子

    jni4net C# java 相互调用

    在C#中,你可以通过创建一个`Bridge`实例并使用`Start`方法来初始化Java虚拟机(JVM)。然后,通过`CreateJavaProxy`或`CreateNetProxy`方法,你可以分别在Java中调用.NET对象或在.NET中调用Java对象。这种双向调用...

    JNI-Java Native Interface资料(精华)

    一个经典的入门示例是通过JNI实现的“Hello World”。这通常涉及在C或C++中编写本地方法,然后在Java中调用该方法来打印消息。此示例展示了如何声明本地方法,如何在本地代码中实现它,以及如何从Java调用本地方法。...

    JavaJNI资料全整理含自己的常见问题总结.pdf

    #### Java基础知识——JNI入门介绍(下) 1. **概念回顾**:回顾上一节中介绍的基础概念。 2. **深入讲解**:深入讲解JNI的工作原理和技术细节。 3. **实践案例**:通过实践案例来巩固所学知识。 #### Java调用...

    JNI入门Demo1.0

    通过学习和实践这个JNI入门Demo1.0,你可以掌握JNI的基本用法,包括声明`native`方法、生成头文件、编写C++代码以及构建和加载动态库。这将为你进一步探索Android的原生开发打下基础,比如使用C++提升性能、接入第三...

    adt-bundle JNI NDK 初学者实例

    在Android开发中,JNI(Java Native Interface)和NDK(Native Development Kit)是两个关键的组件,它们允许开发者使用C/C++代码来增强应用程序的功能,提高性能,或者利用硬件的特殊功能。`adt-bundle`则是一个包含了...

    JAVA虚拟机解读入门

    - 本地方法栈:支持Java的本地接口,为JNI调用服务。 - 程序计数器:记录当前线程所执行的字节码的地址。 3. 执行引擎:负责解释和执行字节码,包括解释器和JIT(Just-In-Time)编译器。解释器逐条执行字节码,而...

Global site tag (gtag.js) - Google Analytics