dlopen和dlsym如何动态调用函数
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍dlopen和dlsym如何动态调用函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux/unix 提供了使用 dlopen 和 dlsym 方法动态加
千家信息网最后更新 2025年01月20日dlopen和dlsym如何动态调用函数
这篇文章主要介绍dlopen和dlsym如何动态调用函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Linux/unix 提供了使用 dlopen 和 dlsym 方法动态加载库和调用函数,这套方法在 macOS 和 iOS 上也支持。
dlopen 打开一个库,获取句柄。
dlsym 在打开的库中查找符号的值。
dlclose 关闭句柄。
dlerror 返回一个描述最后一次调用dlopen、dlsym,或 dlclose 的错误信息的字符串。
动态调用 printf 函数,编写测试代码如下:
#importtypedef int (*printf_func_pointer) (const char * __restrict, ...); void dynamic_call_function(){ //动态库路径 char *dylib_path = "/usr/lib/libSystem.dylib"; //打开动态库 void *handle = dlopen(dylib_path, RTLD_GLOBAL | RTLD_NOW); if (handle == NULL) { //打开动态库出错 fprintf(stderr, "%s\n", dlerror()); } else { //获取 printf 地址 printf_func_pointer printf_func = dlsym(handle, "printf"); //地址获取成功则调用 if (printf_func) { int num = 100; printf_func("Hello exchen.net %d\n", num); printf_func("printf function address 0x%lx\n", printf_func); } dlclose(handle); //关闭句柄 }} int main(int argc, char * argv[]) { @autoreleasepool { dynamic_call_function(); return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}
在手机上运行的输出结果如下:
Hello exchen.net 100printf function address 0x189f0da78
以上是"dlopen和dlsym如何动态调用函数"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
动态
函数
句柄
内容
地址
方法
篇文章
成功
代码
价值
信息
兴趣
字符
字符串
小伙
小伙伴
更多
知识
符号
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
航天信息有网络安全概念
sdcms 数据库
2008年数据库试题及答案
珙县网络安全
2021职高高考网络技术
工信部网络安全实施方案
rsync服务器
设计公司项目软件开发
安徽学生少儿编程平台软件开发
山西通信软件开发
小学校园网络安全宣传知识
互联网金融科技公司定义
电影数据库 php
电竞与网络安全
湘潭电子软件开发学院
服务器共享文件管理制度
广西容县网络安全宣传
什么网站无法访问服务器
提供软件开发的合同纠纷
ftp服务器搭建免费
http文件下载服务器哪个好用
王者荣耀服务器选择
日语软件开发的人员安排
网页调用数据库
云服务器ip地址释放后去哪里了
长沙系统软件开发团队
高超网络技术
网络安全英语作文80词初中
淄博手机软件开发系统
arm架构服务器应用场景