这几天研究了下 JAVA调用C ,在不懂C的情况下研究这个实在让人郁闷,还好总算搞出来了。
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。
下面来说说如何实现 JAVA调用C
首先来说JAVA部分
JAVA 部分
1、 加载动态库(dll文件 )
static {
System.loadLibrary(“dll库文件”);
}
2、 调用的方法做本地声明,关键字为native 方法不用实现 由C实现
public native void displayHelloWorld();
3、 执行javac HelloWorld.java (以下java类的命名都以HelloWorld命名)
4、 执行javah –classpath . HelloWorld 生成 “.h”文件. 把这个“.h”文件交给C实现。
C方面操作
用vc++做为编译器具体操作如下:
1、 创建项目—>win32 项目—>应用类型选择dll
2、 C类库不包括与java通信的库类,将JNI加载到C库类中 也就是 把JAVA jdk 包include文件夹的所有文件C 编译器 VC\include 下
3、 实现HelloWorld.h接口 生成 dll文件(生成的dll文件用replase下的 否则会产生java.lang.UnsatisfiedLinkError 或者乱码情况 )。
4、 把生成的dll文件拷贝到和class文件一个目录下 运用 java
注:提供可运行jnirun.bat 方便查看结果
分享到:
相关推荐
通过Java调用本地方法.pdf
java调用本地打印机
Java程序语言虽然是一种非常...本文将重点探讨Java程序对本地方法的调用,从探讨Java调用本地方法的原因及意义入手,进而对其调用本地方法的几个步骤做了阐述,紧接着对几种常见的Java调用本地方法的方案进行分析和对比。
java调用本地dll的几种方法性能对比测试。 JNA消耗的总时间(ms):5406 bridj消耗的总时间(ms):984 JNI消耗的总时间(ms):47 包含c++源码和java源码,部署和使用方法。在win7和winxp下测试用过。 部分源码是...
java swing界面调用本地摄像头,demo可以直接导入eclipse运行,直接运行CameraFrame.java即可。
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式 )。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各...
将项目解压导入eclipse,运行SimpleWebBrowserExample就行了
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的...
java中调用本地exe文件.txtjava中调用本地exe文件.txt
java调用并口打印机 usb并口打印 无驱打印 本地打印
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的...
通过本地方法调用来调用C语言的例子,一个调用时间的,谨供参考
java web调用exe
java调用本地化(dll)实用文档, 本文档分别以JNA、jni、JNative举例,详细说明了java调用DLL的方法;
Java调用小票打印机打印购物清单
易语言JAVA调用 例子,Java虚拟机,Java本地接口,源码。
获得代码,保存到本地,调用本地编译器编译文件,执行之后返回结果并删除文件。可以更改为接口,集成到web项目里,达到类似菜鸟工具java在线编程的效果,考虑并发的话需要使用多线程
Java调用本地库 JNAerator