动态链接库的使用
来源:互联网 发布:yii2.0源码分析 编辑:程序博客网 时间:2024/05/17 22:07
动态链接库(.so)可以让程序在运行时被加载,当so修改时,使用程序不需要重新编译就可以使用。本文介绍几个函数,讲述so的加载和方法调用。
void * dlopen( const char * pathname, int mode);以指定模式打开某动态链接库文件,返回句柄。
模式有:RTLD_LAZY, RTLD_NOW; RTLD_GLOBAL, RTLD_LOACAL;RTLD_NODELETE, RTLD_NOLOAD,RTLD_DEEPBIND
void* dlsym(void* handle, const char* symbol)handle是由dlopen打开动态库返回的指针,symbol是要获取的函数或全局变量的名称,返回值是指向函数的地址,供后续调用。
int dlclose(void* handle)关闭动态库,handle是dlopen返回的句柄。只有当次动态库的使用计数为0时,才会真正被系统卸载。
实例:
被调用的代码
A* GetA(){ return new A;}class A { public: void say() { cout << "hello" << endl; } }
编译成A.so,主程序调用
//函数指针A* (*pGetA)();void* handle = dlopen("A.so", RTLD_LAZY);pGetA = (A* (*)())dlsym(handle, "GetA");A* a = (*pGetA)();a->say();dlclose(handle);
- 动态链接库的使用
- 动态链接库的使用
- 动态链接库的使用
- 动态链接库的使用
- 动态链接库的使用
- 动态链接库的使用
- 动态链接库的使用
- 关于动态链接库及使用动态链接的优点
- 关于动态链接库及使用动态链接的优点
- 使用动态链接库
- 动态链接库使用
- 使用动态链接库
- 使用动态链接库
- DELPHI 中动态链接库的使用
- LINUX动态链接库的使用
- lapack 动态链接库的使用示例
- 使用动态链接库的正确方法
- 动态链接库的使用简述
- 再发一篇博客,关于jQuery,我经常被嫌弃的
- maven常用命令介绍
- 解决 java/lang/NoClassDefFoundError: java/lang/Object 错误
- Hive 读书笔记4:HiveQL Data Definition(下)
- 常用坐标系统
- 动态链接库的使用
- mysql以表为基础导出/导出脚本
- 关于Keil编译错误 L6236E: No section matches selector - no section 的解决方法
- ORACLE 日期函数
- 程序与测试团队
- Tomcat从零开始(三)分离与完善
- 数组排序
- 多连块拼图
- 【原创】安装和使用 TPCC-MySQL 工具遇到的问题