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
- Java的JNI:使用Java调用C程序(一)
- Java的JNI:使用Java调用C程序(入门)
- 【Java】Java调用C/C++程序的实现(jni)
- java JNI调用c程序
- Java调用C++: JNI的使用入门
- jni的使用(java调用c++)
- Jni 使用总结第二篇:c程序调用java
- java高级编程,JNI的使用。java代码调用c程序
- java高级编程,JNI的使用。c程序调用java代码
- Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 【程序员一枚】JNI之Java调用C++(一)
- JNI小程序:Java通过JNI调用C程序
- java通过jni调用C程序
- jni实现C语言调用Java程序
- Java JNI调用c/c++程序
- java调用dll(JNI的使用)
- JNI java调用c代码 (一)静态注册
- Spark编程注意事项
- dll 动态库文件的一些问题
- hdu4510
- 关于图片查看的小结
- Android中处理崩溃异常
- Java的JNI:使用Java调用C程序(一)
- iOS 万能跳转界面方法 (runtime实用篇一)
- 检测二叉查找树节点的情况
- Linux进程间通信之匿名管道
- 使用Python的requests库作接口测试——请求对象与响应对象
- hdu4506
- button的OnClickListener的三种实现方法
- Codeforces Round #312 (Div. 2) (第三题是位运算,好题)
- SQL拼接