首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

学习JNA,Jnative个人小结

2012-09-02 
学习JNA,Jnative个人总结首先说下JAVA调用DLL,Java调用DLL的常用方法大致为几种,JNI,JNA,Jnative等,但实现

学习JNA,Jnative个人总结
首先说下JAVA调用DLL,Java调用DLL的常用方法大致为几种,JNI,JNA,Jnative等,但实现与易用性差距还是很大,1.JNI用的人比较多,但相对来说比较麻烦要熟悉c并且要使用javac 及javah命令,步骤繁琐2.JNA,Jnative相对简单只需要用实现接口,使用相对简单,但无论使用什么调用dll文件,比较令人头疼的都是JAVA与C之间类型对应与值对应。下面我将项目中对着JNA及jnative的使用总结下。


1.JNA样码


步骤如下:


a,下载JNAjar文件,拷贝至系统根目录或者系统system32下

b,代码很easy

package com.cn.app;import com.sun.jna.Library;import com.sun.jna.Native;public class DLLTEST {// 1.实现PegRoute.dll 文件接口public interface PegRoute extends Library {// 2.PegRoute.dll 中 HCTInitEx方法public int HCTInitEx(int Version, String pStrCurrentDirectory);}public static void main(String[] args) {                 //3.加载DLL文件,执行dll方法  PegRoute epen = (PegRoute) Native.loadLibrary("PegRoute",PegRoute.class);if (epen != null) {System.out.println("DLL加载成功!");int success = epen.HCTInitEx(0,"");System.out.println("1.设备初始化信息!" + success);}}}



2.Jnative样码

1.下载jnative。jar 及JNativeCpp.dll
2.将使用的dll文件及JNativeCpp.dll拷贝至系统system32下
3.样码

import org.xvolks.jnative.JNative;import org.xvolks.jnative.exceptions.NativeException;import org.xvolks.jnative.Type;import org.xvolks.jnative.misc.basicStructures.LONG;public class JNativeT {static JNative PegRoute = null;public String init() throws NativeException, IllegalAccessException {try {if (PegRoute == null) {// 1. 利用org.xvolks.jnative.JNative来加载DLL:参数1.PegRoute为类名// 2.HCTInitEx方法名PegRoute = new JNative("PegRoute", "HCTInitEx");// 2.设置要调用方法中的参数:0 表示第一个以此类推LONG versionLong = new LONG(10);versionLong.setValue(0);PegRoute.setParameter(0, Type.LONG, versionLong.toString());PegRoute.setParameter(1, Type.STRING, "");// 3.设置返回参数的类型PegRoute.setRetVal(Type.INT);// 4.执行方法PegRoute.invoke();// 调用方法}System.out.println("调用的DLL文件名为:" + PegRoute.getDLLName());System.out.println("调用的方法名为:" + PegRoute.getFunctionName());// 5.返回值return PegRoute.getRetVal();} finally {if (PegRoute != null) {// 6.释放系统资源PegRoute.dispose();}}}public static void main(String[] args) throws NativeException,IllegalAccessException {String mm = new JNativeT().init();System.out.println(mm);}}


要使用的相关jar文件都在下方。

热点排行