DLL的类库怎样实现动态加载调用

本文介绍了如何实现DLL类库的动态加载调用,包括Windows下的LoadLibrary、GetProcAddress和FreeLibrary,以及Unix上的dlopen、dlsym、dlclose和dlerror。此外,还展示了QT中的QLibrary如何封装动态库调用。通过创建类工厂方法,导出对象指针,实现在DLL中的类库动态加载调用,并给出了一个完整的DLL接口定义和应用程序调用示例。
摘要由CSDN通过智能技术生成

动态加载动态连接库能更加有效地使用内存,这在大型项目中是非常有用的一项技术。DLL中的函数可以很容易的实现动态加载调用,网上也有很多相关的介绍,但DLL中类库怎样实现动态加载调用呢?
这是我在实际项目中遇到的一个问题,可以采用类工厂方法,把对象的指针导出来的方法解决这个问题,如果需要对跨平台的支持还可以使用QT中的QLibrary代替LoadLibrary等函数。

1)与动态库调用有关的函数包括:
(1)LoadLibrary(或MFC 的AfxLoadLibrary),装载动态库。
(2)GetProcAddress,获取要引入的函数,将符号名或标识号转换为DLL内部地址。
(3)FreeLibrary(或MFC的AfxFreeLibrary),释放动态链接库。
2)unix上与动态库调用有关的函数包括:
(1)_打开动态链接库:dlopen,函数原型void *dlopen (const char *filename, int flag);
dlopen用于打开指定名字(filename)的动态链接库,并返回操作句柄。
(2)取函数执行地址:dlsym,函数原型为: void *dlsym(void *handle, char *symbol);
dlsym根据动态链接库操作句柄(handle)与符号(symbol),返回符号对应的函数的执行代码地址。
(3)关闭动态链接库:dlclose,函数原型为: int dlclose (void *handle);
dlclose用于关闭指定句柄的动态链接库,只有当此动态链接库的使用计数为0时,才会

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值