用JNA调用DLL动态链接库初探(一)

1.JNA描述

       JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。

      JNA类库使用一个很小的本地类库sub 动态的调用本地代码。程序员只需要使用一个特定的java接口描述一下将要调用的本地代码的方法的结构和一些基本属性。这样就省了为了适配多个平台而大量的配置和编译代码。因为调用的都是JNA提供的公用jar 包中的接口。

2.JNA优点

      JNA可以让你像调用一般java方法一样直接调用本地方法。就和直接执行本地方法差不多,而且调用本地方法还不用额外的其他处理或者配置什么的,也不需要多余的引用或者编码,使用很方便。

3.JNA调用DLL实例

打开eclipse新建一个普通的Java project, 把需要加载使用的dll拷贝到工程的目录跟bin同级,, 然后在网上下载jna.jar文件,在Java工程中新建lib文件夹,将下载的jna.jar包放入lib文件夹中,然后build path到这个工程中。(直接上图!!)

用JNA调用DLL动态链接库初探(一)

然后开始我们的java接口, loadLibrary第一个参数就是dll的名字,第二个就是当前接口的.class类型,接口里面的方法名要跟C的接口方法名一致

用JNA调用DLL动态链接库初探(一)

4.注意事项

    dll打包的时候可以打包成32位和64位,但是必须和你的jdk一致,否则在调用的时候会报错