java调用相互依赖的dll的处理方法是什么
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关java调用相互依赖的dll的处理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、问题描述最近在做一个功能时遇
千家信息网最后更新 2026年11月04日java调用相互依赖的dll的处理方法是什么
这篇文章将为大家详细讲解有关java调用相互依赖的dll的处理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一、问题描述
最近在做一个功能时遇到java需要调用dll,并且dll有依赖关系,之前都是单独调用一个,其实调用dll的都是模板代码,本身没有太高的难度,主要是相互依赖的还是第一次碰见,特此记录一下并分享给需要的朋友参考。
二、处理办法
其中A是dll方法的入口,A依赖B,C,D,E,F,G五个dll,先定义接口继承StdCallLibrary ,编写加载各个dll的模板代码,需要依赖的都全部加载进来,我这儿是A依赖了B,C,D,E,F,G六个dll,所以我这里共写了六个接口,来分别加载不同的dll,主要是因为StdCallLibrary不支持加载多个dll,如果支持的话就不用写多个了,废话不多说直接上代码:
2.1 类定义
import com.sun.jna.Native;import com.sun.jna.win32.StdCallLibrary;/** * * ClassName: DllLoadClass
* Function: TODO ADD FUNCTION.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:08:21
* * @author 行则将至 * @version */public class DllLoadClass { /** * * ClassName: A
* Function: TODO 加载A.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:08:58
* * @author 行则将至 * @version DllLoadClass */ public interface A extends StdCallLibrary { String dllName = "dllv2/A"; A INSTANCE = Native.load(dllName,A.class); public String a(String inString); } /** * * ClassName: B
* Function: TODO 加载B.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:09:27
* * @author 行则将至 * @version DllLoadClass */ public interface B extends StdCallLibrary { String dllName = "dllv2/B64"; B INSTANCE = Native.load(dllName,B.class); } /** * * ClassName: C
* Function: TODO 加载C.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:09:41
* * @author 行则将至 * @version DllLoadClass */ public interface C extends StdCallLibrary { String dllName = "dllv2/C64"; C INSTANCE = Native.load(dllName,C.class); } /** * * ClassName: D
* Function: TODO 加载D.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:09:50
* * @author 行则将至 * @version DllLoadClass */ public interface D extends StdCallLibrary { String dllName = "dllv2/D64"; D INSTANCE = Native.load(dllName,D.class); } /** * * ClassName: E
* Function: TODO 加载E.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:10:37
* * @author 行则将至 * @version DllLoadClass */ public interface E extends StdCallLibrary { String dllName = "dllv2/E64"; E INSTANCE = Native.load(dllName,E.class); } /** * * ClassName: F
* Function: TODO 加载F.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:10:01
* * @author 行则将至 * @version DllLoadClass */ public interface F extends StdCallLibrary { String dllName = "dllv2/F64"; F INSTANCE = Native.load(dllName,F.class); } /** * * ClassName: G
* Function: TODO 加载G.
* Reason: TODO ADD REASON(可选).
* date: 2022年1月27日 下午5:10:10
* * @author 行则将至 * @version DllLoadClass */ public interface G extends StdCallLibrary { String dllName = "dllv2/G64"; G INSTANCE = Native.load(dllName,G.class); } }
2.2 调用
上边虽然是定义出来了,那么怎么调用或者使用呢?调用其实也很简单,都定义出来了之后,其实就是需要咱们把依赖都加载进来即可,咱们仍然是直接上代码:
public class Test { @SuppressWarnings("unused") public static void main(String[] args) { B b = DllLoadClass.B.INSTANCE; C c = DllLoadClass.C.INSTANCE; D d = DllLoadClass.D.INSTANCE; F f = DllLoadClass.F.INSTANCE; G g = DllLoadClass.G.INSTANCE; A a = DllLoadClass.A.INSTANCE; String result = a.a(""); }}原理就是调用一下成员变量,让其加载进来即可。
关于java调用相互依赖的dll的处理方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
代码
方法
处理
内容
多个
就是
接口
文章
更多
模板
知识
篇文章
参考
支持
不同
不错
上边
不用
入口
办法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技
互联网科技公司介绍
华脉科技工业互联网产品
互联网汽车科技小镇
农村开互联网科技讲堂
深圳前海聚择互联网科技有限公司
新华互联网科技2019
互联网系的金融科技公司
常德市电业局互联网科技部
江阴互联网智能科技产品进口
互联网科技研发水平
互联网金融科技名词解释
区块链结合互联网科技
小米互联网科技园入驻
江苏互联网智能科技软件
西安有哪些互联网高科技企业
全球科技与互联网公司市值变化
科技美学互联网 艺术
互联网科技企业文化
颐高云石互联网科技
互联网 科技服务平台
佳云科技和互联网广告
昭通互联网科技选哪家
米聚互联网科技南京有限公司排面
电子科技大学互联网创业大赛
科技类公司包括互联网吗
富国互联网金融科技混合基金
吉林省码上互联网科技电话
互联网领先科技活动
宁波允成互联网科技有限公司