Java的JNI:使用Java调用C程序(一)

来源:互联网 发布:淘宝和京东的采购模式 编辑:程序博客网 时间:2024/05/17 01:50
开心!开心!

上一篇文章讲解了怎么使用Java的jni,但那是使用Java的原生命令javac编译,javah生成头文件的,而实际开发肯定不能只用javac、javah这些命令以及繁琐的过程生成dll链接文件,太麻烦了,那怎么在eclipse中生成.h头文件呢?

而且上一篇文章只讲解了怎么输出一个helloworld,实际上几乎每种编程语言,你学会打印出一个helloworld,和能用这种编程语言干点事,还是相差很远的!

上一次用Java的原生命令javac和javah学习打印一个helloworld,就花费了我四五个小时快一下午的时间了(主要花费在生成dlll文件上了),前天为了在eclipse中生成.h文件又花了我一下午的时间,而且没有实际收获(原因主要是:我在eclipse中建立的Java文件,然后我进入到磁盘上对应的目录中用javah命令生成.h文件,老报错,我必须把Java源文件中的package包路径这行代码删掉才可以生成.h文件,具体原因我也不是很清楚,但我觉得肯定是有的命令我没有用对),今天早上又看了一下jni的内容,找到一片文章,是讲怎么在eclipse中继承javah命令,我配置后果然可以在eclipse中直接生成.h文件,而且用.h文件生成的dll文件在eclipse中也可以直接使用!

关于怎么在eclipse中继承javah命令:http://m.blog.csdn.net/blog/u012519566/35230357 感谢原博主!

然后还有一些细节的配置也会让开发变的特别简单,主要是:

1,建立一个文件夹,这个文件夹主要存放你的dll文件,这个文件夹路径要放在path变量中(jdk调用的dll文件是在这个目录中:C:\Program Files\Java\jdk1.6.0_43\jre\bin),这样在程序中就可以使用
static {  
        System.loadLibrary("World");  
    }
直接引用到你生成的dll文件!

2,因为生成dll文件需要使用jni_md.h和jni.h这两个头文件,而dev c++中是使用#include <jni.h>引入进来的,如果你改成#include "jni.h"则jni.h必须得和你的c文件在同一个目录中,所以你可以把jni_md.h和jni.h这两个头文件放到dev c++的include目录中,这样写C程序的时候就不用每次都复制这两个文件了!

其余的都和上一篇文章讲的差不多,在dev c++中建立一个dll项目,会自动生成两个c文件,其中dll.h貌似是没什么用的,主要是dllmain.cpp这个文件,你需要打开.h文件,把里面的c函数原型复制到dllmain.cpp中并实现该方法,而.h文件也需要用include命令引用进来,然后编译项目,就会生成dll文件了。

【文章写的比较简陋,可能不能帮助初学jni的同学立马使用jni写个demo跑起来,其实我也是刚开始学jni,慢慢来,多上网搜搜,肯定能学会jni的】
0 0
原创粉丝点击