加载Dll的公共类实现

一、背景和目标说明

背景:工作中,经常需要加载特定的dll完成特定的功能,为了避免重复代码,因此自行封装了一个简单的加载dll的类。
目标:该类能实现加载同一套导出接口的dll

二、术语和参考资料

暂无

三、 设计

1、整体思路

首先需要约定这一套dll的导出接口是分别是CreateObject、ReleaseObject
支持加载不同的dll,因此需要外部传入dll的全路径
获取导出接口

2、设计方案

2.1 类接口
#pragma once

//定义导出接口
typedef int (__stdcall * FunCreateObject)(void**, int);
typedef int (__stdcall * FunRelaseObject)(void*, int);

//加载dll的公共类
class CLoadDllClass
{
public:
    CLoadDllClass();
    ~CLoadDllClass();
    

protected:
    virtual CString _GetDllFilePath();    //子类需实现
    
    BOOL _Init();

    BOOL _ReleaseData(void* pData, int nID);
    
    BOOL _LoadLibrary(const CString& strFilePath);

    BOOL _GetFuncAddr(void);

    BOOL _GetObject(void** pData, int nID);

private:
    FunCreateObject  m_pFunCreateObject;
    FunRelaseObject m_pFunRelaseObject;

    HMODULE         m_hDll;

};

由类接口可知,使用方仅需要实现_GetDllFilePath接口即可,其他的接口内部实现,这样就能减少代码的重复率,在需要加载同一套dll的类中,仅需要继承该CLoadDllClass类并实现_GetDllFilePath即可。

2.2 接口说明

1、_GetDllFilePath
调用方需要实现,主要是返回需要加载的dll的全路径
2、_Init
调用方调用,加载dll并获取约定好的导出接口指针
3、_ReleaseData
调用方调用,释放对应的导出指针
4、_GetObject
调用方调用,获取对应的导出指针

示例:https://download.csdn.net/download/m0_48073095/18139854

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
此类库由Fly经一年多在一些实际开发项目中运用到的公共方法,特于今日整合在一起已备使用,也希望给朋友们提供一个参考(也有待优化)。 具体类库说明如下: 1.DateDeal.cs 专门用于对日期时间的处理,如时间差、时间格式。 2.DBHelper.cs 连接MSSQL的helper类相信这个大家都比较熟悉了。 3.DESEncrypt.cs 专门用户对字符串的密和解密。 4.ErrorLog.cs 专门用户对系统的一些异常进行记录,默认写于Exception文件夹的ErrorLog.txt里。 5.FileDeal.cs 专门用于对文件的重命名、大小、格式等操作。 6.IExport.cs 专门用于数据的导入导出,目前此类不能使用。需入正确的执行sql方法等。 7.ImageDeal.cs 专门用于对图片文字水印、压缩图片等操作 8.InportMsg.cs 用于导入时字段实体,暂时无用。 9.MessageBox.cs 用于弹出对话框 10.RexDeal.cs 用于正则表达式的相关操作 11.SerializationHelper.cs 专门用于对类进行序列化和反序列化操作 12.ServerFileUpLoad.cs 专门用于文件的上传下,附带了一点对于文件下时迅雷的使用说明。 13.StringDeal.cs 专门用于对于字符串的处理如截取、过滤、数据类型转换等操作 14.SystemConfigInfo.cs 专门用于得到操作系统的相应数据如CUP使用率、硬盘使用情况等 15.ValidatePost.cs 专门用于数据的验证如邮箱匹配、数字字母匹配等 16.Util.cs 专门的一个工具类如发送邮件、获取Webconfig信息、获取本类库程序集的信息等 17.还有access、mysql、oracle的dbhelper

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值