首先说下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文件都在下方。
分享到:
相关推荐
总结起来,JNI和JNA都是Java与本地代码交互的重要工具。JNI适合对性能有严格要求且愿意投入更多时间在本地代码上的项目,而JNA则为开发者提供了便利,牺牲了一定的性能以换取开发效率。在实际应用中,应根据项目需求...
jna和jnative的一个简单示例工程,包含jna和jnative的jar包,还有jna的chm api文档以供参考。其中.dll是的函数是求两个数的较大值。这是我初入学习java访问.dll做的一个示例。
相比于JNA,JNative提供了更底层的控制,但需要编写JNI代码,这通常涉及创建头文件、实现本地方法并进行编译。`TestJNative.java`很可能是使用JNative调用DLL的示例代码。 `jinvoke.jar`是另一个相关的库,它可能...
JNI(Java Native Interface)框架是Java平台中用于与本地代码交互的一种机制,它允许Java程序调用C/C++等本地库的...通过这些库,Java开发者可以避免深入学习和使用JNI的复杂性,同时也能充分利用Java的跨平台优势。
标题中的“JNA.jar-JNative.jar-dll创建-JAVA调用-VC调用”涉及到的是Java平台下通过JNI(Java Native Interface)的两种实现方式,JNA(Java Native Access)和JNative,来与C/C++编写的动态链接库(DLL)进行交互...
总的来说,"jna4.4.0+jna-platform4.4.0+JNative.zip"这个压缩包提供了一套完整的工具,让Java开发者能够方便、高效地利用操作系统API,实现底层功能的集成和扩展,而无需深入学习本机编程。通过熟练掌握JNA,Java...
JNative可以与其他Java库如Apache Commons、JNA(Java Native Access)等结合使用,以实现更复杂的功能。理解如何将JNative与其他工具结合,能进一步提升开发效率。 总之,“JNative学习资料”是学习和掌握Java与C/...
《JNative调用DLL进行开发详解》 在Java编程中,有时我们需要调用本地系统库(如DLL...通过对YiKaTong.rar中的示例进行学习,开发者可以深入理解JNative的工作原理,并将其应用于自己的项目中,解决跨语言调用的问题。
总结来说,JNative和JNA都是Java与本地代码交互的重要工具,它们为开发者提供了便利,使得在Java中调用本地资源变得更加简单。JNA 4.0.0的发布,进一步提升了这一过程的效率和可靠性,使得在跨平台项目中使用本地...
值得注意的是,JNative并不是唯一的选择,Java中还有其他库如JNA(Java Native Access)和JNR(Java Native Runtime)等,它们提供了不同的方式来调用本地代码。然而,JNative以其简洁的API和良好的性能,成为许多...
资源中,有源代码、以及相关依赖包,适合懂java的人去破解windows程序,样例代码给出了破解数字类密码的方法,感兴趣的同学可以在此基础上进行改造,做适合自己场景的破解逻辑,谢谢大家!
3. **JNative**:可能是一个包含头文件和源代码的目录,供开发者查看和学习如何使用JNative库来调用Win32 API。 4. **libJNativeCpp.so**:这是针对Linux平台的动态链接库,表明JNative库也支持Linux环境,但具体...
但是这样很麻烦,而且双层封装不稳定,最后在网上看到有人用Jnative可以直接访问delphi的dll库,所以就转向Jnative,但是通过折腾里面还是从在了很多问题,最后通过JavaEye问答讨论,用JNA比用Jnative好用一点,所以最终...
《深入理解Java调用DLL与Win API:JNative.jar解析》 在Java编程环境中,有时候我们需要调用操作系统底层的...对于希望深入了解Java本地接口和系统级编程的开发者来说,JNative.jar及其源代码是不可多得的学习资源。
Java调用DLL的工具JNative是为了解决Java应用程序与本地动态链接库(DLL)交互问题而设计的一个开源组件。在传统的Java开发中,如果需要调用非Java编写的库,比如C或C++编译的DLL,通常会使用JNI(Java Native ...
总结一下,JNative框架结合了JNA的便利性和JNI的灵活性,为Java和Android开发者提供了一种简单易用的方式来调用本地动态库。这个压缩包中的三个文件覆盖了Windows和Linux/Android平台,使得跨平台的本地方法调用变得...
ava调用c程序的一个工具,同样是基于JNI的,但是使用起来超级方便,比JNA、JaWin等工具更加简单,还需要相应的dll文件,会一起上传的,这里是一个我用过的例子,希望能帮助需要的人.
先说下JAVA调用DLL,Java调用DLL的常用方法大致为几种,JNI,JNA,Jnative等,但实现与易用性差距还是很大,1.JNI用的人比较多,但相对来说比较麻烦要熟悉c并且要使用javac 及javah命令,步骤繁琐2.JNA,Jnative相对...
最新 JNative_1.4RC3 & 1.4RC2 & 1.3 官方合集:bin、src文件齐全。 1.4RC3 bin - MD5:ccf311939e4b3a6e8d55813861a4a857 1.4RC3 src - MD5:2d9a4c8ac54f2f79bed260966476b776 JNative使用说明:...
Java调用DLL/so源代码JNA和JNative 调用现有的.dll/.so文件,使用JNI技术调用,我们首先需要另外使用C语言写一个.dll/.so共享库,使用SUN规定的数据结构替代C语言的数据结构,调用已有的dll/so中公布的函数。