亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java調(diào)用相互依賴的dll的處理方法

 更新時間:2022年01月28日 08:44:12   作者:斗戰(zhàn)勝yuan  
大家好,本篇文章主要講的是java調(diào)用相互依賴的dll的處理方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

一、問題描述

最近在做一個功能時遇到java需要調(diào)用dll,并且dll有依賴關系,之前都是單獨調(diào)用一個,其實調(diào)用dll的都是模板代碼,本身沒有太高的難度,主要是相互依賴的還是第一次碰見,特此記錄一下并分享給需要的朋友參考。

二、處理辦法

其中A是dll方法的入口,A依賴B,C,D,E,F(xiàn),G五個dll,先定義接口繼承StdCallLibrary ,編寫加載各個dll的模板代碼,需要依賴的都全部加載進來,我這兒是A依賴了B,C,D,E,F(xiàn),G六個dll,所以我這里共寫了六個接口,來分別加載不同的dll,主要是因為StdCallLibrary不支持加載多個dll,如果支持的話就不用寫多個了,廢話不多說直接上代碼:

2.1 類定義

import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;

/**
 * 
 * ClassName: DllLoadClass <br/> 
 * Function: TODO ADD FUNCTION. <br/> 
 * Reason: TODO ADD REASON(可選). <br/> 
 * date: 2022年1月27日 下午5:08:21 <br/> 
 * 
 * @author 行則將至 
 * @version
 */
public class DllLoadClass {
	
	/**
	 * 
	 * ClassName: A <br/> 
	 * Function: TODO 加載A. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:08:58 <br/> 
	 * 
	 * @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 <br/> 
	 * Function: TODO 加載B. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:09:27 <br/> 
	 * 
	 * @author 行則將至  
	 * @version DllLoadClass
	 */
	public interface B extends StdCallLibrary {
		String dllName = "dllv2/B64";
		
		B INSTANCE = Native.load(dllName,B.class);
		
	}
	
	/**
	 * 
	 * ClassName: C <br/> 
	 * Function: TODO 加載C. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:09:41 <br/> 
	 * 
	 * @author 行則將至  
	 * @version DllLoadClass
	 */
	public interface C extends StdCallLibrary {
		String dllName = "dllv2/C64";
		
		C INSTANCE = Native.load(dllName,C.class);
	}
	
	/**
	 * 
	 * ClassName: D <br/> 
	 * Function: TODO 加載D. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:09:50 <br/> 
	 * 
	 * @author 行則將至  
	 * @version DllLoadClass
	 */
	public interface D extends StdCallLibrary {
		String dllName = "dllv2/D64";
		
		D INSTANCE = Native.load(dllName,D.class);
	}
	
	/**
	 * 
	 * ClassName: E <br/> 
	 * Function: TODO 加載E. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:10:37 <br/> 
	 * 
	 * @author 行則將至  
	 * @version DllLoadClass
	 */
	public interface E extends StdCallLibrary {
		String dllName = "dllv2/E64";
		
		E INSTANCE = Native.load(dllName,E.class);
	}
	
	/**
	 * 
	 * ClassName: F <br/> 
	 * Function: TODO 加載F. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:10:01 <br/> 
	 * 
	 * @author 行則將至  
	 * @version DllLoadClass
	 */
	public interface F extends StdCallLibrary {
		String dllName = "dllv2/F64";
		
		F INSTANCE = Native.load(dllName,F.class);
	}
	
	/**
	 * 
	 * ClassName: G <br/> 
	 * Function: TODO 加載G. <br/> 
	 * Reason: TODO ADD REASON(可選). <br/> 
	 * date: 2022年1月27日 下午5:10:10 <br/> 
	 * 
	 * @author 行則將至  
	 * @version DllLoadClass
	 */
	public interface G extends StdCallLibrary {
		String dllName = "dllv2/G64";
		
		G INSTANCE = Native.load(dllName,G.class);
	}
	
}

2.2 調(diào)用

上邊雖然是定義出來了,那么怎么調(diào)用或者使用呢?調(diào)用其實也很簡單,都定義出來了之后,其實就是需要咱們把依賴都加載進來即可,咱們?nèi)匀皇侵苯由洗a:

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("");
	}
}

原理就是調(diào)用一下成員變量,讓其加載進來即可。

三、結語

道阻且長,行則將至,行而不輟,未來可期,加油。

到此這篇關于java調(diào)用相互依賴的dll的處理方法的文章就介紹到這了,更多相關java相互依賴的dll內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論