需要工具dllexp查看DLL内部方法名称
需要工具depends查看DLL的依赖包
一。网上开源的工具JNative可以直接调用,但官方只支持32位的,有开源JNativeCPP的源码,没玩过CPP,不知道能否编译出64的
二。JNA调用DLL
不需要中间DLL,直接调用即可
import com.sun.jna.Library; import com.sun.jna.Native; public class PdfJNA { public interface CLibrary extends Library { CLibrary INSTANCE = (CLibrary) Native.loadLibrary(("E:\\XPDFLib642.dll"), CLibrary.class); int XPDF2XmlWithTable(String format, String s2, byte[] s3); } public static void main(String[] args) { byte[] s3 = new byte[300]; int r = CLibrary.INSTANCE.XPDF2XmlWithTable("D:\\2013-01-31\\600122_20130201_1.pdf", "D:\\2013-01-31\\dsf", s3); System.err.println(r); } }
三。JNI调用DLL
需要C++的编译器,只要C++调用DLL方法通过,Java就能调用。
1.建一个类,包含两部分
static {
System.load("E:\\XPDFLib.dll");
System.load("E:\\jniDll.dll");
}
public native static int XPDF2XmlWithTable(String pdfFile,String outFile,String outCtx);
2.javac com/Class.java
3.javah com/Class
得到Class.h文件
用C++建立一个DLL项目,导入Class.h头文件,实现其方法,方法中调用需要引用的DLL方法。
编译得到jniDll.dll。(jni.h在JDK目录找)
4.然后把jniDll.dll和需要调用的XPDFLib.dll一起放到bin下或者指定目录引用,执行XPDF2XmlWithTable方法即可得到结果。
附C++中的实现方法,网上搜的,能用:
//定义方法
typedef int (_stdcall *_XPDF2XmlWithTable)(char* pdfFile,char* outFile,char* outCtx);
HINSTANCE hDLL;
_XPDF2XmlWithTable ttt;
hDLL=LoadLibrary("XPDFLib64.dll");//加载动态链接库MyDll.dll文件;
ttt=(_XPDF2XmlWithTable)GetProcAddress(hDLL,"XPDF2XmlWithTable");
int A=ttt(rtn,rtn2,c3); // 传入的char*参数
FreeLibrary(hDLL);//卸载MyDll.dll文件;
return A;
相关推荐
在实际项目中,Java调用DLL通常用于利用已有的C/C++库,或者执行一些Java不擅长的任务,如硬件控制、图形处理等。然而,由于涉及到本地代码,这也会增加程序的复杂性和维护难度,因此在选择这种方法时需要权衡利弊。...
Java调用DLL是Java开发中一个重要的技术主题,它允许Java程序与本地操作系统API或者其他C/C++编写的动态链接库进行交互。在Java中,有多种方法可以实现这个功能,其中最常用的是Java Native Interface (JNA) 和 ...
总的来说,通过Java调用DLL实现DES加密解密涉及了Java和C/C++的混合编程,需要理解JNI的工作原理,以及如何在C/C++中与DLL交互。这个过程对于那些希望在Java中利用已有的本地库功能的开发者来说是至关重要的。
总结来说,Java调用DLL文件主要依赖于JNative库,通过定义Java接口、加载DLL、获取函数句柄、创建代理对象以及调用函数等步骤实现。这种方法使得Java开发者能够充分利用C/C++库的功能,同时也保持了Java的跨平台特性...
总结来说,Java调用DLL主要涉及JNI的使用,包括在Java中声明native方法,生成JNI头文件,编写C++代码实现接口,编译链接DLL,以及在Java中加载和调用DLL。这个过程允许Java开发者充分利用C++的高性能特性,同时保持...
### JAVA调用DLL方法 在跨平台开发领域中,Java作为一种强大的编程语言,因其具有良好的移植性和跨平台性而被广泛使用。然而,在某些特定情况下,我们可能需要调用本地库(例如DLL文件)来实现特定功能或提高性能。...
Java调用DLL文件是将Java程序与C/C++编写的动态链接库集成的一种技术,主要通过JNI(Java Native Interface)来实现。JNI是Java平台的标准部分,它允许Java代码和其他语言写的代码进行交互。在本实例中,我们将探讨...
### Java调用DLL:JNative概述 在Java项目中,有时候需要调用本地系统的动态链接库(DLL)来实现特定的功能。传统的做法是通过Java Native Interface (JNI)来进行调用,但这往往涉及到复杂的配置和繁琐的过程。为了...
### Java调用DLL详解 在跨平台开发领域,Java凭借其强大的兼容性和广泛的适用性而备受青睐。然而,在某些特定场景下,如底层硬件访问、高性能计算或与已有C/C++库集成时,直接利用Java可能无法达到最优效果。这时,...
JNA是实现Java调用DLL的关键工具,DLL是Windows操作系统中的本地库,而“java调用dll”是整个过程的目标。 在压缩包子文件的文件名称列表中,只有一个文件名"testmj"。通常,这可能是一个测试类或者包含主方法的...
Java调用DLL文件是软件开发中的常见需求,尤其是在Java与C/C++混合编程时。`JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO...
本主题聚焦于"Java调用DLL接口",这是一个允许Java代码利用Windows系统上的DLL功能的技术。 DLL(Dynamic Link Library)是微软Windows操作系统提供的一种机制,它包含了一组可执行函数和变量,可供多个程序同时...
Java调用DLL是一种常见的跨语言交互技术,允许Java应用程序利用C++编译的动态链接库(DLL)中的功能。在本场景中,我们有一个Win7 64位系统,使用了1.6版本的JDK,并且用Visual Studio C++创建了一个64位的DLL。以下...
总结,Java调用C++ DLL的过程主要包括:编写C++ DLL、创建Java JNI接口、生成JNI头文件、实现JNI接口并编译为DLL、最后在Java程序中加载和调用DLL。这个过程虽然有些复杂,但能充分利用现有C++库,拓展Java的功能。...
Java调用DLL(动态链接库)是Java编程中的一项高级技术,主要应用于Java与本地代码交互,例如在Java中利用C++或C编写的库。本文将详细介绍如何使用Java调用DLL以及所需的必备jar包。 首先,Java并不直接支持DLL的...
Java调用DLL函数是跨平台编程中的一种常见需求,特别是在Java与C/C++代码交互时。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如DLL文件)的函数,而无需编写JNI(Java Native ...
本示例以"Java调用DLL例子"为主题,使用了JNative库作为接口来实现Java调用本地动态链接库。 JNative是一个开源的Java库,它提供了一种方法使得Java程序能够直接调用C/C++编写的函数,从而间接实现了调用DLL的功能...
Java调用DLL和OCX是将Java语言与Windows平台下的动态链接库(DLL)和控件(OCX)集成的一种技术。DLL是Windows系统中的一种共享库,它包含可由多个程序同时使用的代码和数据。而OCX是ActiveX控件,主要用于Windows...
在Java中调用DLL(Dynamic Link Library)文件,可以使用Java的本地方法接口(JNI,Java Native Interface)来实现。JNI允许Java程序与本地代码进行交互,从而实现跨平台的功能。
标题中的“java调用dll实现键盘的屏蔽”指的是在Java程序中通过动态链接库(DLL)来阻止键盘输入。这是一个常见的需求,特别是在自动化测试、安全软件或者某些特殊应用环境中,可能需要防止用户通过键盘进行输入干扰...