JNI介绍及简单实例
JNI概念
JNI是Java Native Interface的缩写,中文为JAVA本地调用。
使用JNI, 可以调用用其他语言写成的库或程序, 尤其是C和C++。
好了,概念性的内容就不多介绍了, 直接进入实例
JNI实例
实例环境: Eclispe3.7 + jdk1.6 + Visual Studio 2005
基本步骤:
1. 写Java的测试类(在eclipse中)
2. 使用javah 命令,生成C头文件(命令行方式)
3. 新建C++ 的Win32项目, 导入以上生成的头文件, 完善.cpp(Visual Studio 2005中)
4. 编译生成动态链接库(.dll)文件
5. 将dll 文件拷入"java.library.path" 对应的目录中
6. 运行步骤1的java类((在eclipse中) 就能看到效果了。
完成此例子, 不一定需要安装Eclipse和VS, 只不过借助这些工具会比较方便一些。
详细步骤:
1. 写Java的测试类
#include <stdio.h>#include <stdlib.h>#include "JniTest.h"JNIEXPORT void JNICALL Java_JniTest_hello(JNIEnv * a, jobject b){printf("HelloWorld,This is a JNI Test");}
要编译生成 .dll ; 需要使用Java的一些头文件;比如 jni.h;
工具 --> 选项
左边选项中选 项目和解决方案--> VC++ 目录 点击后添加
\jdk路径\include\win32
\jdk路径\include
这两个路径
点击 生成--> 生成解决方案
在debug 目录下就能看见生成的 jnitest.dll 文件了
特别注意: 此 dll 的生成路径可能是外层的debug 目录下
在内层的debug 路径看到的是jnitest.dll.embed.manifest 等文件
5. 将dll 文件拷入"java.library.path" 对应的目录中
可以通过
System.out.println(System.getProperty("java.library.path")); 看可以有哪些目录
一般来说,可以把dll 拷入 WINDOWS\system32 下 或是 \jdk路径\bin 目录下。
6. 运行步骤1的java类((在eclipse中) 就能到在cpp文件里打印的日志效果了~~