JNI简单HelloWorld
Posted 知乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JNI简单HelloWorld相关的知识,希望对你有一定的参考价值。
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 运行
6、将dll文件放入系统环境变量
当使用System.loadLibrary()调用 Dll,可将dll文件所在系统目录放入系统环境变量即可
参见http://blog.csdn.net/forandever/article/details/5983846
以上是关于JNI简单HelloWorld的主要内容,如果未能解决你的问题,请参考以下文章
Android JNI编程——JNI概念以及C语言Dev-C++开发环境搭建编写HelloWorld