文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java调用相互依赖的dll的处理方法

2024-04-02 19:55

关注

一、问题描述

最近在做一个功能时遇到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;


public class DllLoadClass {
	
	
	public interface A extends StdCallLibrary {
		String dllName = "dllv2/A";
		
		A INSTANCE = Native.load(dllName,A.class);
		
		public String a(String inString);
		 
	}
	
	
	public interface B extends StdCallLibrary {
		String dllName = "dllv2/B64";
		
		B INSTANCE = Native.load(dllName,B.class);
		
	}
	
	
	public interface C extends StdCallLibrary {
		String dllName = "dllv2/C64";
		
		C INSTANCE = Native.load(dllName,C.class);
	}
	
	
	public interface D extends StdCallLibrary {
		String dllName = "dllv2/D64";
		
		D INSTANCE = Native.load(dllName,D.class);
	}
	
	
	public interface E extends StdCallLibrary {
		String dllName = "dllv2/E64";
		
		E INSTANCE = Native.load(dllName,E.class);
	}
	
	
	public interface F extends StdCallLibrary {
		String dllName = "dllv2/F64";
		
		F INSTANCE = Native.load(dllName,F.class);
	}
	
	
	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的处理方法的文章就介绍到这了,更多相关java相互依赖的dll内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯