码迷,mamicode.com
首页 > 其他好文 > 详细

JNI简单HelloWorld

时间:2018-01-18 21:14:49      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:定义   isp   .dll   java程序   print   []   png   声明   post   

1、编写Java代码

建立hello目录,编写HelloWorld.java:

 1 class HelloWorld
 2 {
 3     public native void displayHelloWorld();
 4     static {
 5         System.loadLibrary("hello");
 6     }
 7    
 8     public static void main(String[] args) {
 9         new HelloWorld().displayHelloWorld();
10     }
11 }

注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。

方法不包括实现,因为我们要用c/c++语言实现它。

注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll

(如果在其他的操作系统可能是其他的形式,比如hello.so)

 

2、编译Java代码,并生成.h文件

 javac HelloWorld.java ,生成class文件

 javah HelloWorld ,生成.h文件(在java8之后,该命令可能改为 javac -h)

 

3、编写本地实现

在vs中新建控制台工程,输出选择dll

将HelloWorld.h添加进工程中

将java目录中的jni.h,jni_md.h包含到工程中

技术分享图片

hello.cpp代码:

 1 #include "stdafx.h"
 2 
 3 
 4 #include <jni.h>
 5 #include "HelloWorld.h"
 6 #include <stdio.h>
 7 
 8 JNIEXPORT void JNICALL
 9 Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
10 {
11     printf("Hello world!/n");
12     return;
13 }

 

4、编译生成hello.dll

注意:需要生成Release版本的x64位dll文件

技术分享图片

 

5、运行Java程序

将生成的hello.dll文件和之前的HelloWorld.class放在一起

 java HelloWorld 运行

技术分享图片

 

JNI简单HelloWorld

标签:定义   isp   .dll   java程序   print   []   png   声明   post   

原文地址:https://www.cnblogs.com/zhile/p/8312990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!