简单dll:https://www.cnblogs.com/ttqi/p/12053715.html
dll调用类:
public class pdtEdsLoadDispatchDeviceInfo {
public interface CLibbrary extends Library{
String esdapipatch=AgentGlobals.getXMLProperty("esdapipatch", "C:\\Program Files (x86)\\eastcom\\Eastcom DS 2000(Only SDK)\\sdk\\app\\api\\bin\\EdsApi");
CLibbrary INSTANCE = (CLibbrary)Native.loadLibrary(esdapipatch, CLibbrary.class);
int EdsSystemInit(EdsSystemParam_t.ByReference pSysParam);
}
}
结构体:
public class EdsSystemParam_t extends Structure{ public char[] userName=new char[17]; public char[] userPassword=new char[17]; public int isLinkOam = 2; public WString pResourceConfigFilePath; public EdsMsgCallBackProcF lpfnMmModuleProc; public String bInitGisSnmp = "ETFALSE"; public static class ByReference extends EdsSystemParam_t implements Structure.ByReference{} public static class ByValue extends EdsSystemParam_t implements Structure.ByValue{} @Override protected List getFieldOrder() { // TODO Auto-generated method stub return Arrays.asList(new String[]{"userName","userPassword","isLinkOam","pResourceConfigFilePath", "lpfnSmModuleProc","bInitGisSnmp"}); } }
回调函数类:
public class EdsMsgCallBackProcF_class{
public interface EdsMsgCallBackProcF extends StdCallCallback{
public void MessageHandle(int nCode,String wParam,String lParam);
}
public static class MessageHandle_Realize implements EdsMsgCallBackProcF{
public void MessageHandle(int nCode,String wParam,String lParam) {
//回调后内部处理流程
Log.info("nCode:"+nCode+";wParam:"+wParam+";lParam:"+lParam);
if(nCode==0x1550){
Constants.EdsMsgCallBackProcF=true;
Constants.edsRadior.start();
}else if(nCode==0x1551 || nCode==0x1554){
Constants.EdsMsgCallBackProcF=false;
Constants.edsRadior.stoptimer();
//new EdsRadioUserBaseInfoAction_timer().stop();
//new EdsSystemInitThread().start();
}
}
}
}
引用:
String user=AgentGlobals.getXMLProperty("pdtuser",
"admin");
String password=AgentGlobals.getXMLProperty("pdtpassword",
"123456");
EdsSystemParam_t.ByReference param=new EdsSystemParam_t.ByReference();
user.getChars(0, user.length(), param.userName, 0);
password.getChars(0, password.length(), param.userPassword, 0);
param.isLinkOam=2;
//回调函数
EdsMsgCallBackProcF procf=new MessageHandle_Realize();
param.lpfnMmModuleProc=procf;
param.pResourceConfigFilePath=new WString(AgentGlobals.getXMLProperty("esdissipatch","C:\\Program Files (x86)\\eastcom\\config\\esdissi.xml"));
//调用dll
int msg=CLibbrary.INSTANCE.EdsSystemInit(param);
