首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java再则JNI之实例

2012-10-26 
Java再说JNI之实例引言:???? JNI,java本地接口。介绍跳过,搜索“JNI”有好大一票记录。网上例子灰常多,差不多

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”。

?

Java再则JNI之实例

?

在win32向导中,选择“Dll”。如图“create_win32DLL_project_asDLL.jpg”所示。

?

Java再则JNI之实例

?

点击“完成”,即生成jniWin32项目。如图“jniWin32_project_fileView.jpg”所示。

?

Java再则JNI之实例

?

此时,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   真的非常谢谢,太详细了

热点排行