JNI简单HelloWorld

1、编写Java代码

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

 class HelloWorld
{
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
} public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}

注意我们的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包含到工程中

JNI简单HelloWorld

hello.cpp代码:

 #include "stdafx.h"

 #include <jni.h>
#include "HelloWorld.h"
#include <stdio.h> JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!/n");
return;
}

4、编译生成hello.dll

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

JNI简单HelloWorld

5、运行Java程序

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

java HelloWorld 运行

JNI简单HelloWorld

6、将dll文件放入系统环境变量

当使用System.loadLibrary()调用 Dll,可将dll文件所在系统目录放入系统环境变量即可

参见http://blog.csdn.net/forandever/article/details/5983846

上一篇:Android tcpdump抓包应用实现


下一篇:k8s快速上手1-原理与实践准备