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

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  
强大不错。

相关推荐

    jni快速入门实例

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

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

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

    JNI的入门开发

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

    JNI的使用实例与讲解(初学必备)

    java调用VC++编写的动态链接库dll,文档中写了三个例子,①简单的入门小例子 ②java传整型数给dll,返回整型数,③java传两个整型数,返回整型数组,每个例子都有详细的说明,帮助初学者理解JNI的使用流程和原理!...

    JNI使用实例

    一个JNI入门的使用实例 android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java2游戏编程.pdf

    中文名: Java2游戏编程 ...附录C 使用JNI创建一个gamepad阅读器 附录D 使用.JAR文件来部署Java applet 附录E 正确运行Java 2 applet 附录F Magic游戏引擎源码清单 附录G 更多的资源 附录H 配书光盘中有些什么

    java开源包4

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包6

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包9

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包101

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包8

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包5

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包3

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics