这篇文章将为大家详细讲解有关java调用相互依赖的dll的处理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、问题描述最近在做一个功能时遇到java需要调用dll,并且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,如果支持的话就不用写多个了,废话不多说直接上代码:
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);}}
上边虽然是定义出来了,那么怎么调用或者使用呢?调用其实也很简单,都定义出来了之后,其实就是需要咱们把依赖都加载进来即可,咱们仍然是直接上代码:
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的处理方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
--结束END--
本文标题: java调用相互依赖的dll的处理方法是什么
本文链接: https://www.lsjlt.com/news/321653.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0