一、介绍

动态链接,是在程序已经执行时,加载链接的方法

二、有关动态链接库生成

1、在导出处使用 extern "C"申明

extern "C"
{void fun1(){...}void fun2(){...}
}

2、在链接时使用 -fPIC。fPIC是说明该库与位置无关,可以通过全局偏移表(GOT)访问地址

1、终端/makefile
gcc main.cpp -fPIC -shared -o libapp.so2、CMakeLists.txt (cmake)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
add_library(app SHARED main.cpp)

3、动态链接库依赖其他库

(1)链接动态库,直接链接

(2)链接静态库,该静态库需要符合 fPIC

三、接口介绍

头文件:<dlfcn.h>

链接 dl动态库

1、打开
void *dlopen(const char *filename, int flag);
返回值:成功:返回值接口句柄失败:NULL
参数:filename:动态链接库路径flag:RTLD_LAZY:函数符号,调用dlsym时解析RTLD_NOW:函数符号打开时解析2、关闭
int dlclose(void *handle);
返回值:成功:0失败:非零
参数:接口句柄3、解析函数
void *dlsym(void *handle, const char *symbol);
返回值:成功:返回函数指针,经过强转即可直接调用失败:NULL
参数:handle:接口句柄symbol:导出库的函数名称(符号)

动态链接库(dlopen、dlsym、dlclose)(Linux)相关推荐

  1. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror

    dlopen 基本定义 功能:打开一个动态链接库  包含头文件:  #include <dlfcn.h>  函数定义:  void * dlopen( const char * pathn ...

  2. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror【zt】

    dlopen 基本定义 功能:打开一个动态链接库 包含头文件: #include <dlfcn.h> 函数定义: void * dlopen( const char * pathname, ...

  3. LINUX下动态链接库的使用(dlopen/dlsym/dlclose/dlerror)

    dlopen 功能:打开一个动态链接库  包含头文件: #include <dlfcn.h>  函数定义: void * dlopen( const char * pathname, in ...

  4. dlopen dlsym dlclose加载动态链接库

    dlopen 在dlopen()函数以指定模式打开指定的动态链接库文件,并返回一个句柄给dlsym()的调用进程.使用dlclose()来卸载打开的库. 基本定义 功能:打开一个动态链接库,并返回动态 ...

  5. linux c之动态打开链接库(dlopen dlsym dlclose)

    1 linux提供了加载和处理动态链接库的系统调用 2 主要函数 1) dlopen.     dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程,打开模式如下: RTLD_LA ...

  6. 解决函数名冲突问题(dlopen,dlsym,dlclose)

    背景 最近在加载动态库的时候有遇到一个问题,如图1所示,多个动态库同时提供同名函数但是具体实现却不同的情况,那么有个问题,当我们调用的时候怎么确认调用的是某个静态库中的函数?其实,当我们链接所有的静态 ...

  7. 用g++编译生成动态连接库*.so的方法及连接(dlopen() dlsym() dlclose())

    ================================================================ //test_so_file.h ifndef TEST_SO_FIL ...

  8. net-snmp交叉编译出现 undefined reference to dlopen,dlsym,dlclose错误

    移植net-snmp到armlinux上,编译测试程序的时候出现 dlopen,dlsym等未定义的情况 查了下,问题出现在编译选项上,需要加上 -ldl选项.加了选项之后问题得以解决.

  9. Unity发布预审:检查出调用苹果禁用api: [dlopen, dlsym]

    表现: 打包出来的ipa在腾讯的wetest的ios预审中报以下错误. 最主要的就是这个[dlopen][dlsym],据公司的测试姐姐说这是苹果严打的对象.那么怎么从项目中找到问题代码并修改呢? 解 ...

  10. dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchan关于苹果禁用JSPatch(热修复一类),上架审核被拒问题

    应用很长一段时间没有上架了, 最近上了一次居然被打回来了,后续提交了很多次都被打回. 也跟苹果大大发了好几封邮件,但是依然无果 被拒原因具体如下 Hello, Thank you for your r ...

最新文章

  1. zabbix配置外部邮件服务器进行邮件报警
  2. 理解cookie和session
  3. 重启大法好!线上常见问题排查手册
  4. java快速获取大图片的分辨率(大图片格式JPG,tiff ,eg)
  5. 新手篇 | K8S配置最佳实践
  6. Vmware workstation 安装解压 vmwaretools 提示只读文件
  7. mysql 上级组织参数值_MYSQL组织结构设计构思(快速查上级和下级)
  8. 【作业4】朗途职业规划测试
  9. 网页测速 php,好用实用的站长测速工具网站大全
  10. 如何划分和细化有限元网格,才能提高计算的精度和速度?
  11. Unity3D帧动画,图片的切换实现动画效果
  12. Timer already cancelled 或者 Task already scheduled or cancelled
  13. java零基础学习第九天
  14. 京东商城主图视频抓取的方法步骤
  15. bi平台是如何进行数据的采集呢
  16. 当STM32遇上RFID
  17. 【MySQL高级篇】第06章_索引的数据结构
  18. 计算机无法装补丁,电脑无法安装kb4012212补丁如何处理|电脑无法安装kb4012212补丁的处理方法...
  19. 《用PS给照片换底》
  20. 怎样在ps中对海报图颜色叠加 教你快速实现颜色叠加方法

热门文章

  1. Vue 中 scoped 样式穿透
  2. 通过局域网让别人访问自己的电脑项目
  3. 河海大学计算机网络毕业设计,河海大学文件河海大学毕业设计.doc
  4. OpenCV 书稿:前言
  5. 报错:version magic ‘3.10.0_hifone SMP mod_unload ARMv7 p2v8 ‘ should be ‘3.10.0_s40 SMP mod_unload ARM
  6. 阿里云code下载代码和更新代码
  7. OpenMVS+Win10+VS2019+vcpkg编译及问题
  8. LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(五)之使用RabbitMQ缓存消息
  9. wxPython 4.2.0 发布
  10. qq飞车与服务器未响应,QQ飞车游戏安装失败系统错误提示问题解决方法_QQ飞车游戏安装失败怎么办_游戏堡...