日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java对C语言Dll的加载 和 回调函数的使用

發(fā)布時(shí)間:2025/4/16 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java对C语言Dll的加载 和 回调函数的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C語言HWPuSDK.h文件:

#ifndef _HW_PU_SDK_H_ #define _HW_PU_SDK_H_#pragma pack(push,4)#ifdef _WIN32// for windows #ifdef HWFEDSDK_EXPORTS #define _HW_PU_API extern "C" __declspec(dllexport) #else #define _HW_PU_API extern "C" __declspec(dllimport) #endif#else // for linux #define _HW_PU_API #define __stdcall #define CALLBACK #define WINAPI #endiftypedef char CHAR; typedef unsigned char UCHAR; typedef short SHORT; typedef unsigned short USHORT; typedef int INT; typedef unsigned int UINT; typedef int BOOL; typedef long LONG; typedef long DWORD; typedef unsigned long ULONG; typedef unsigned long long ULONGLONG; typedef long long LONGLONG; typedef void * HANDLE; typedef void VOID; typedef int SOCKET; typedef void * HWND;// 時(shí)間,時(shí)、分、秒,24小時(shí)制 typedef struct TIME {CHAR szYear[TIME_YEAR_LEN];CHAR szMonth[TIME_OTHERS_LEN];CHAR szDay[TIME_OTHERS_LEN];CHAR szHour[TIME_OTHERS_LEN];CHAR szMinute[TIME_OTHERS_LEN];CHAR szSecond[TIME_OTHERS_LEN]; }PU_TIME_S, *LPPU_TIME_S;// 告警上報(bào)信息結(jié)構(gòu) typedef struct ALARM_REPORT { ULONG ulDeviceId; //告警設(shè)備IDPU_ALARM_TYPE_E enAlarmType; //告警類型PU_TIME_S stTime; //告警發(fā)生時(shí)間PU_ALARM_ACTION_E enAction; //告警發(fā)生/消除ULONG ulAlarmId; //告警ID CHAR szReserve[RESERVE_LEN]; }PU_ALARM_REPORT_S, *LPPU_ALARM_REPORT_S;// ★ 告警上報(bào)回調(diào) typedef LONG(CALLBACK *pfGetAlarmInfoCallBack)(LPPU_ALARM_REPORT_S pstAlarmReport, VOID *pUsrData);// ★ 告警上報(bào)接口 _HW_PU_API BOOL __stdcall IVS_PU_AlarmInfoStatesCallBack(ULONG ulIdentifyID, pfGetAlarmInfoCallBack fAlarmResportCallBack, VOID *pUsrData);#pragma pack()#endif

Java中Dll接口:

package com.huawei.ipc;import com.sun.jna.*;// Dll接口 public interface HwIpcSdk extends StdCallLibrary {// Dll文件的加載HwIpcSdk INSTANCE = (HwIpcSdk)Native.loadLibrary("HWPuSDK", HwIpcSdk.class);//時(shí)間,時(shí)、分、秒,24小時(shí)制public static class LPPU_TIME_S extends Structure{public byte[] szYear = new byte[TIME_YEAR_LEN];public byte[] szMonth = new byte[TIME_OTHERS_LEN];public byte[] szDay = new byte[TIME_OTHERS_LEN];public byte[] szHour = new byte[TIME_OTHERS_LEN];public byte[] szMinute = new byte[TIME_OTHERS_LEN];public byte[] szSecond = new byte[TIME_OTHERS_LEN];}// 告警上報(bào)信息結(jié)構(gòu)public static class PU_ALARM_REPORT_S extends Structure{public int ulDeviceId; //告警設(shè)備IDpublic int enAlarmType; //告警類型public LPPU_TIME_S stTime; //告警發(fā)生時(shí)間public int enAction; //告警發(fā)生/消除public int ulAlarmId; //告警IDpublic byte[] szReserve = new byte[RESERVE_LEN]; }// ★ 告警上報(bào)回調(diào)函數(shù)public static interface FGetAlarmInfoCallBack extends StdCallCallback{public int invoke(PU_ALARM_REPORT_S lpAlarmReport, String pszUserInfo);}// ★ 告警上報(bào)接口boolean IVS_PU_AlarmInfoStatesCallBack(int ulIdentifyID, FGetAlarmInfoCallBack fAlarmResportCallBack, String pszUserInfo); }

?

調(diào)用類:

package com.huawei.ipc;import javax.swing.*; import java.awt.*; import java.text.*; import java.util.Date; import com.sun.jna.*;// 主界面類 public class MainEntry extends javax.swing.JFrame {//告警上報(bào)回調(diào)函數(shù)AlarmCallBack alarmCallBack = null;static HwIpcSdk hwIpcSdk = HwIpcSdk.INSTANCE;// 告警上報(bào)提供調(diào)用public void enableAlarm(){if(null == alarmCallBack){alarmCallBack = new AlarmCallBack();} if(false == hwIpcSdk.IVS_PU_AlarmInfoStatesCallBack(m_lUserID, alarmCallBack, null)){JOptionPane.showMessageDialog(this, "啟動告警監(jiān)測失敗");System.out.println("啟動告警監(jiān)測失敗!");}else{System.out.println("啟動告警監(jiān)測成功!");}}// 告警上報(bào)的回調(diào)函數(shù)類public class AlarmCallBack implements HwIpcSdk.FGetAlarmInfoCallBack{// ★ 回調(diào)的函數(shù)實(shí)現(xiàn)public int invoke(HwIpcSdk.PU_ALARM_REPORT_S lpAlarmReport, String pszUserInfo){// 處理 lpAlarmReport 和 pszUserInfo 的內(nèi)容return 0;}} }

轉(zhuǎn)載于:https://www.cnblogs.com/xuejianhui/articles/2736600.html

總結(jié)

以上是生活随笔為你收集整理的Java对C语言Dll的加载 和 回调函数的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。