前段时间,帮客户做了点东西,用java调用dll,最近要写博客呢,就整理一下,给现在将要用和以后用的朋友们提供点方便,少走一些弯路。
总的来说,java调用dll还是比较顺利的,现在先说一下什么是dll吧,dll是Dynamic Link Library 的缩写形式,中文是动态链接库,是一个包含多个程序同时使用的代码和数据的库,dll不是可执行文件,不过可以被调用。
网上有多种调用方法有JNA调用的,有JNI调用的,还有JNative调用的,经过比较,我选择了JNative,JNI的方法是我调用so的时候,以后会介绍的。
首先要下载JNative组件,jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2,1.4的我也试过,也没有什么区别,可能会有区别吧,只是我调用的时候没有涉及到。 然后就是解压了,获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。JNativeCpp.dll Windows下用的,拷贝到windows / system32目录下;libJNativeCpp.so Linux下的,拷贝到系统目录下;JNative.jar 这是一个扩展包,导入工程LIB中或将其拷贝到jdk\jre\lib\ext 下,系统会自动加载。如果你是用eclipse调用的话,直接放到src目录下就可以了。
测试用的dll我是用delphi写的一个名为MyJavaDll的dll,dll中包含一个Triple函数,返回一个整形的结果,调用方法我是参考网上的资料,自己编写的,可能会和网上的一些有些类似。
首先配置好JNative组件的windows环境:
将Native要用到JNativeCpp.dll放在系统盘的\WINDOWS\system32下
将JNative.jar导入工程中,新建一个调用类:
java 代码
package com.test;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
publicclass AppSvrTestConnect {
public AppSvrTestConnect() {
}