【原创】windows下学习JNI?eclipse + dev-c++就够了,方便

来源:互联网 发布:重装linux系统有pe 编辑:程序博客网 时间:2024/06/06 02:29

注:本文是入门教程,关于环境搭建。常用的Eclipse+CDT或者minGW方法本人试过好多次,都没有成功。因此其他方法可行的同志们,可以当做一种参考,或者有比这个更方便的方法的同学们欢迎提出更好地解决方案。

本人所实习的公司近期派下的任务中有一个是关于JNI的编程,而本人又确实没有涉足过此领域,于是在度娘谷歌里面搜了很多搭建JNI编程环境和方法的文章,但是很多都是eclipse+minGW的,而单用MinGW的话非常麻烦,而且在命令行下(很显然windows的命令行完全没有Linux下的好用)特别麻烦,而且虽然说用VS也可以做,但是就VS的那个体积安装完也就够V5的了,而且占用资源大,对于我的这么点2G内存来说实在是消受不起。搞了近乎半天连HelloWorld都搞不定,这对于初学者来说要崩溃

于是乎,经过一些软件的测试,发现Dev-C++来做JNI开发和学习非常方便,虽然说最新版本是2005年的4.9.9.2版本,已不再更新,但是却是经典的IDE,跟当年VC6.0是同一级别的经典,而且大小非常小只有9M左右。它自带的是minGW编译器,免去了诸多自己配置的问题,对于初学者来说可以避免配置错误导致无法使用minGW的情况,所以在编译的时候会直接把linux的文件也会编译出来,非常方便。下载位置可以自己百度一下。

本文所用到的是eclipse + dev-c++这两款软件,它们的安装配置我就不在这里详述了,非常简单

本文主要讲的是环境的搭建使用方法,所以对于源码的理解请自行找教程

=============================忧桑的分割线==============

先来看eclipse下的HelloWorld代码

1、新建一个JAVA工程,然后新建一个Class叫做HelloWorld:

保存后在项目文件夹(在本机资源管理器打开)的bin目录下就有编译好的class文件

2、用CMD进入该文件夹,输入 javah -jni HelloWorld (当然前提是已经把JAVA的环境变量设置好并把它放到了PATH中),就可以生成需要用到的头文件HelloWorld.h 文件。

3、打开Dev-C++,新建一个工程,选择DLL,语言选择C Project(或者C++都可以,根据需要而定),工程名称一定要跟在JAVA中调用的名称保持一致,也就是HelloWorld

点击OK就会让你选择项目保存位置,这个随意。新建之后在左边的Project视图下会看到HelloWorld工程,并且自动生成两个文件,不用管它,把那两个原文件全部删掉(右击要删除的文件,remove file)

4、把之前生成的HelloWorld.h文件移动到你保存的刚刚新建项目的所在位置(一定要同一目录,否则编译报错),右击Dev C++中HelloWorld项目,选add to project,把移动过来的文件选中,添加进工程

5、(这一步非常重要)在菜单栏中选project->project option->directories标签->include directories标签,在其中添加JDK文件夹下的include和include\win32两个文件夹,如图

这一步经常容易遗忘,一定要注意每新建一个项目都要添加这两个文件夹,否则jni.h是无法识别的

6、新建C源码,HelloWorld.c,

7、保存之后Ctrl+F9进行编译,编译完成之后就会在该项目所在目录下找到需要的HelloWorld.dll动态链接库以及Linux版的.so .o文件。

以下是最重要的几步

8、在最开始建的JAVA项目的文件夹下新建一个目录(比如lib)

9、右击项目->properties->Java BuildPath->Source标签,在点击的JNITest/src会展开下拉列表,选择Native library location并单击右面的Edit

10、选择当前项目(我的是JNITest)下的lib目录,一路OK下来回到Eclipse主界面,运行HelloWorld就会在下面的控制台下面看到输出结果了。

到此,整个Windows下的JNI环境算是搭建好了

========================蛋疼的分割线========================

牧之推荐:网络上关于JNI的教程非常之多,但是本人发现岂是SUN提供的官方JNI教程是最最好用最最通俗易懂最最全面系统的教程(当然,前提是能对E文不过敏)。

下载地址:http://java.sun.com/docs/books/jni/download/jni.pdf

JNI真的是好东西,不仅可以大大提高软件执行效率,你不了JAVA的一些不足,而且对于某些只能用C/C++的场合提供了非常方便的方法。