dlsym

  • 样例
    • hello.c
    • hello_test.c
    • 执行.a

样例

hello.c

#include <stdio.h>
int xx = 996;void test()
{printf("test called\n");
}

编译so gcc hello.c -fPIC -shared -o libhello.so

hello_test.c

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>int main(int argc, char **argv)
{void *handle = dlopen("./libhello.so", RTLD_LAZY);  if(!handle) {printf("open failed: %s\n", dlerror());return 1;}   void *xx = dlsym(handle, "xx");  //libtest.so 中定义的xxif(xx) {printf("xx is %d\n", *(int*)xx);}  else {printf("load failed: %s\n", dlerror());      }void *test = dlsym(handle, "test");  //libtest.so 中定义的xxif(test) {void (*f_test)() = (void (*)())test;f_test();return 1;}  else {printf("load failed: %s\n", dlerror());     }dlclose(handle);return 0;
}

编译.a gcc hello_test.c -ldl -o hello_test.a

执行.a

xx is 666
test called

dlsym 动态调用动态链接库相关推荐

  1. dlopen 和 dlsym 动态调用函数

    dlopen 和 dlsym 动态调用函数 iOS/MacOSX/移动安全  exchen  2年前 (2018-08-20)  2997浏览  0评论 Linux/unix 提供了使用 dlopen ...

  2. linux dlopen函数,dlopen 和 dlsym 动态调用函数

    Linux/unix 提供了使用 dlopen 和 dlsym 方法动态加载库和调用函数,这套方法在 macOS 和 iOS 上也支持. dlopen 打开一个库,获取句柄. dlsym 在打开的库中 ...

  3. 嵌入式Linux支持dlopen,Android下使用dlopen函数动态调用.so链接库

    在这篇文章([09.03.25]Linux环境中dlopen函数的简单应用)中.实现了在UBUNTU LINUX环境下使用dlopen函数动态调用.so链接库.但是也提到了在Android下未能成功. ...

  4. C#程序实现动态调用DLL的研究(转)

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法--将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  5. 通过反射动态调用webservices

    该方法可以使程序不通过web引用的方式去调用webservices方法,直接在代码里调用该方法就能达到动态调用webservices的目的.使用前先引用System.Web.Services动态链接库 ...

  6. VC++6.0如何创建与调用动态链接库(dll)

    VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库.MFC规则DLL和MFC扩展DLL.DLL导出函数(或变量.类)可供应用程 ...

  7. JAVA调用动态链接库

    上一篇<JAVA本地接口(JNI)>中介绍了JAVA的JNI技术,通过JAVA自有的方式调用动态链接库,这一篇将继续为大家介绍使用其他方式调用动态链接库. 首先,我们编写一个用于测试的链接 ...

  8. 动态调用动态库方法 .so

    2019独角兽企业重金招聘Python工程师标准>>> 关于动态调用动态库方法说明 一.       动态库概述 1.  动态库的概念 日常编程中,常有一些函数不需要进行编译或者可以 ...

  9. Unity调用动态链接库dll和so

    [001]Unity调用动态链接库dll和so  ApolloAR https://www.jianshu.com/p/f37bb72979a1 一.PC平台 (注:环境 VS2017+Unity20 ...

最新文章

  1. 一些js代码,自己备用的。高手不要笑话我。。(跨浏览器基础事件,浏览器检测,判断浏览器的名称、版本号、操作系统)...
  2. glup Browsersync
  3. mysql 控制台操作命令
  4. 2.2 Wrappers访问控制
  5. HTTP CORS(HTTP-同源策略)
  6. java rx_史上最浅显易懂的RxJava入门教程
  7. Tomcat 6、7在EL表达式解析时存在的一个Bug
  8. 23种设计模式(四)组件协作之观察者模式
  9. php常量的声明和使用
  10. 工大瑞普虚拟思科实验室full(U7.3)环境配置方法
  11. 互亿无线python接口
  12. 教你如何用通道来快速抠图的方法
  13. dnf怎么显示连接服务器失败怎么回事,登录DNF显示连接不到服务器怎么办 服务器连接失败解决方法...
  14. 分布式 | dble元数据更新同步
  15. 外贸出口业务管理解决方案丨汇信
  16. 马哥教育N38第二周作业
  17. 编辑PDF文件时如何提取页面
  18. 第九章——规范数据库设计
  19. 华为防火墙设置安全策略,封禁高危异常ip
  20. Spring Security详细讲解(JWT+SpringSecurity登入案例)

热门文章

  1. 嗖嗖嗖主题网wordpress外贸企业主题制作教程--第一讲 本地环境的搭建和wordpress安装
  2. 酒至数杯 卡巴斯基杀毒软件
  3. Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动。”...
  4. 百度无人驾驶车北京上路!网友:没有司机我有点慌
  5. 静态手势识别总体方案
  6. Electron桌面悬浮球工具,支持拖动及配置,提供了待办事项、快速笔记等功能。
  7. FAT32文件系统转NTFS文件系统
  8. 昨夜无眠 转自科学网程代展博文] (2012-11-13 21:09:13)
  9. 色字头上一把刀【不顶勿进】
  10. rsync+inotify高效实时同步