动态库封装与动态加载

本文介绍了在插件架构中如何进行C++动态库的封装与动态加载,重点阐述了封装动态库导出函数和类对象的方法,以及动态加载时不依赖头文件和lib的实现。同时,注意到了导出类对象必须为纯虚类,虚基类析构函数需为虚函数等关键点。最后提供了封装和解析的步骤,并给出了部分代码示例。
摘要由CSDN通过智能技术生成

在插件架构模式中,需要动态的插拔软件插件,其本质是动态加载和释放库,本文主要用于支撑插件架构的讲解,因此只介绍C++中动态库的封装与动态加载方法,静态加载不做介绍。

插件的开发需要遵循框架的基本接口,因此,框架提供插件的开发接口,插件根据接口进行动态库的封装,封装后由框架选择性加载,从而做到可插播效果。

(文中的加载库方法用了Qt的QLibrary,window的库函数类似)

1主要内容:

  1. 封装动态库,通过导出函数,导出封装的类对象;
  2. 动态加载封装库,不依赖头文件和lib;
  3. 这里的不依赖头文件是指导出C++基础类,①处代码中返回值类型是已定义的,所以不需要任何头文件;导出非C++基础类,①处的返回值类型无定义,仍然需要知道返回类型的定义。但在框架设计中,该接口类是由框架提供给动态库的,即现有接口类,再有动态库,依赖关系发生反转,仍可理解为不需要头文件。

2注意事项:

        1. 导出类对象时,其对象指针必须为纯虚类,想要导出非纯虚类的对象是做不到的;

        2. 虚基类的析构函数应声明为虚函数,否则子类对象无法析构;

3封装步骤:

1. 声明需要导出的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值