首页 > 其他分享 >动态加载

动态加载

时间:2023-02-23 21:00:43浏览次数:41  
标签:handle 内存 返回值 动态 dlopen 加载

动态加载_动态库

1、dlopen

#include<dlfcn.h>
void *dlopen(const char * filename, int flags);
功能:将动态库加载到内存。
参数:filename:共享库路径。如果只给定文件的名字。按照动态链接器的搜索路径找动态库文件
LD_LIBRARY_PATH指定的路径下或者默认路径下找
flags:加载方式,可取以下值
RTLD_LAZY - 延迟加载,使用共享库中的符号(如调用库中的函数)时才加载
RTLD_NOW - 立即加载。函数返回的时候,已经加载到内存

返回值:
成功:返回动态库加载到内存的地址
失败:NULL可以使用dlerror(3)函数诊断错误的原因
注意:
动态链接器的API都需要使用到dl动态库文件。所以链接的时候要使用-ldl。


2、dlclose

#include<dlfcn.h>
int dlclose(void *handle);
功能:关闭动态库。仅仅使动态库的引用计数减一,并不一定从内存移除。只有引用计数为0的时候,才从内存移除。
参数:handle:动态库加载到内存的地址。dlopen(3)的返回值返回值 :
返回值:
成功 0
失败 非0 可以使用dlerror(3)诊断错误的原因

3、dleeror

#include<dlfcn.h>
char *dlerror(void);
功能:获取dlopen API的错误信息
返回值:
返回错误原因字符串的首地址
NULL 没有产生错误

4、dlsym

#include<dlfcn.h>
void *dlsym(void *handle,const char * symbol);
功能:从动态库的句柄种找到符号的地址
参数:
handle:动态库加载到内存的地址。dlopen(3)的返回值
symbol:符号的名字。(符号包括函数的名字、全局变量的名字、静态局部变量的名字)
返回值:成功 返回符号的地址
失败 NULL 可以使用dlerror(3)获取错误的原因

实验代码:

动态加载_加载_02

动态加载_动态库_03

最后加载成功

标签:handle,内存,返回值,动态,dlopen,加载
From: https://blog.51cto.com/u_15887473/6081773

相关文章

  • JavaFX相关问题--在使用JavaFX加载本地图片时图片会无法显示
    开发环境及开发工具Eclipse+JDK10问题描述在使用JavaFX加载本地图片时图片会无法显示解决方案解决方法1——使用file:+绝对路径解决方法2——使用相对......
  • C#中Linq查询条件动态化
    由于Linq查询主要是强类型查询,所以很难做到像sql语句一样,在执行前可以动态拼接。不过通过方法或者集合方式也可以实现一定的动态化。1.动态的or操作。可以简单的使用list......
  • vue-动态显示隐藏表格列
    在vue中想要实现动态展示表格项,可以写一个可扩展的组件  1:主要思路组件需要接受哪些数据:headerData表头数据(添加showHeader字段来控制列是否显示)data表格数据扩展......
  • vue中页面加载进度条效果的实现
    我们在vue项目中,为了减少首屏加载的时间,通常会开启路由的懒加载。路由懒加载配合gizp确实能帮助我们大大的加快首屏的加载时间。然而,路由懒加载会使得我们在第一次打开一......
  • 直播电商平台开发,动态去除系统自带标题栏、状态栏
    直播电商平台开发,动态去除系统自带标题栏、状态栏一、如何去除系统自带标题栏?(1)在value目录下的styles.xml文件新建一个style   <stylename="NoTitle_one"paren......
  • Linux 根系统中增加自动加载网口
    最近在学习复旦微的核心版。遇到的问题是:网卡没法自动加载。在学习资料中也没有提供完整的可行方法。经过研究,按照下面方法可行:1在buildrootf/fmsh/下新建/并拷贝/lib......
  • VS2019动态链接库
          ......
  • 修复element ui级联懒加载问题,二次封装成el-cascader-plus
    el-cascader-plus经常碰到懒加载不回显的问题,使用起来很不方便,于是花了些时间二次开发了这个组件,下次遇到同样问题就能直接解决,在此开源出来,希望对遇到相同问题的人有帮......
  • 【Vue Router】019-动态路由 和 学习总结
    1.19动态路由1.19.1概述添加路由到你的路由上通常是通过​​routes​​​,但是在某些情况下,你可能想在应用程序已经运行的时候添加或删除路由。具有可扩展接口(如​​Vue......
  • 【Vue Router】016-路由懒加载
    1.16路由懒加载这个是很有用的,之前使用import静态导入组件是一次性导入所有的组件,当用户打开网页的时候,会下载所有的组件,这样的话就会很耗时,影响用户体验!1.16.1概述当打......