Java再说JNI之实例
引言:
?
??? JNI,java本地接口。介绍跳过,搜索“JNI”有好大一票记录。网上例子灰常多,差不多只有3,4版的样子,而且不容易按文章的说明自行实现。因此本文,专门就调通一个流行的简单实例进行全程解说。
?
正文:
?
?? (家里电脑无环境,占楼,待续。)
?
??? (续上)
?
??? 本例中,java侧为手工编写,以突出要点。C++侧的dll采用VS2010的win32_dll,以求简洁。
?
??? 一、概要。
?
??? 完成此JniDemo大体需要以下几步:
?
??? 1,编写Java类;
??? 2,编译为*.class文件;
??? 3,编译出JNI头文件;
??? 4,编写C++的dll;
??? 5,部署dll运行*.class。
?
以下就每一步进行详细说明。
?
??? 二、详细说明。
?
??? 1,编写Java类。需要注意的是确认本机JDK安装成功。另外为了突出重点,类不带包声明,以避免“找不到类”这类报错的干扰。代码如下:
?
?
以上代码没有啥解释的,文件名“JniHello.java”(笔者工作目录“E:\tecPoints\jni\”)。
?
??? 2,编译为*.class文件。
?
??? A)“开始” | “运行” (或【窗口】+【R】组合键),输入
?
?
??? 4,编写C++的dll。
?
??? A)打开VS2010(笔者使用的旗舰版)。
?
??? B)操作“ 文件 | 新建 | 项目... ”,在左侧选择“ Visual C++ | win32 ” ,主栏中选择“win32 项目”。下边“名称”填入“jniWin32”,点确定。如图“create_win32DLL_project.jpg”。
?
?
在win32向导中,选择“Dll”。如图“create_win32DLL_project_asDLL.jpg”所示。
?
?
点击“完成”,即生成jniWin32项目。如图“jniWin32_project_fileView.jpg”所示。
?
?
此时,C++ DLL项目创建完成。
?
??? C)编写DLL。
?
??? (i)操作:右键项目“jniWin32” | 选择“在windows 资源管理器中打开文件夹”。然后从java工作目录将“JniHello.h”拷入刚打开的jniWin32工作目录。
?
??? (ii)操作:右键“头文件” | 添加... | 现有项...。选择jniWin32工作目录的“JniHello.h”。
?
??? 注:此时可能出现问题“#include <jni.h>” 找不到jni.h的引用。解决方法,将jdk安装目录下的include文件夹中的“jni.h”,及当前文件夹下win32文件夹中“jni_md.h”、“jawt_md.h”,共3个文件,拷入VS2010安装目录下的“/VC/include/”文件夹中。
?
??? (iii)编辑:
?
??? a)打开“stdafx.h”文件,在末尾添加如下代码:
?
?
此时DLL制作完成。
?
??? 5,部署dll运行*.class。
?
??? A)部署。将此DLL文件拷至Java的*.class(IDE下)同一目录下。
?
注:若报异常:
?
E:\tecPoints\jni>java JniHelloHello !Hello, Zhao !E:\tecPoints\jni>?其中,第2行第一个“Hello !”为DLL打印。
?
?
结语:
?
??? JNI原理很简单,从正文“一、概要”中可以一目了然。问题主要集中在DEMO部署上。
?
??? 老规矩,代码尾随。见《Java JNI之C++DLL实现.rar》
?
?
?
?
?
?
?
?
?
1 楼 flower_is 2011-09-09 顶!有用啊! 2 楼 xiaobojue 2011-10-11 Thank you! 3 楼 huaren329 2012-08-12 真的非常谢谢,太详细了