dlopen与dlsym用法
来源:互联网 发布:韩剧秘密花园知乎 编辑:程序博客网 时间:2024/05/17 04:45
包含头文件:
#include <dlfcn.h>
函数定义:
void * dlopen( const char * pathname, int mode );
函数描述:
在dlopen的()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。通过这个句柄来使用库中的函数和类。使用dlclose
mode:分为这两种
RTLD_LAZY 暂缓决定,等有需要时再解出符号
RTLD_NOW 立即决定,返回前解除所有未决定的符号。
RTLD_LOCAL
RTLD_GLOBAL 允许导出符号
RTLD_GROUP
RTLD_WORLD
返回值:
打开错误返回NULL
成功,返回库引用
编译时候要加入 -ldl (指定dl库)
#include<dlfcn.h>
void* handle= dlopen("./hello.so", RTLD_LAZY);
typedef void(*hello_t)();
hello_t hello = (hello_t) dlsym(handle,"hello");
hello();
dlclose(handle);
注意库函数在库中的定义要用extern“c”来申明,这样在主函数中才能通过“hello”来查找函数。申明的方式有以下两种:
extern"C" int foo;
extern "C" void bar();
and
extern "C" {
extern int foo;
extern void bar();
}
导入类库方法:
#include"polygon.hpp" //类定义处
#include <dlfcn.h>
void* triangle= dlopen("./triangle.so", RTLD_LAZY);
create_t* create_triangle = (create_t*) dlsym(triangle,"create");
destroy_t* destroy_triangle = (destroy_t*) dlsym(triangle,"destroy");
polygon* poly = create_triangle();
// use the class
poly->set_side_length(7);
cout <<"The area is: " << poly->area()<< '\n';
// destroy the class
destroy_triangle(poly);
// unload the triangle library
dlclose(triangle);
- dlopen与dlsym用法
- dlopen与dlsym用法
- dlopen与dlsym用法
- dlopen与dlsym用法
- dlopen与dlsym
- dlopen 与dlsym
- dlopen 与dlsym 学习
- dlopen 与dlsym
- dlopen与dlsym
- dlopen与dlsym的使用
- dlopen dlsym dlclose解析
- dlopen, dlsym 的简介
- dlopen dlsym dlclose dlerror
- dlopen dlsym dlclose dlerror
- linux dlopen于dlsym
- dlopen和dlsym
- dlopen和dlsym
- dlopen和dlsym
- libuv之用CRITICAL_SECTION实现读写锁
- 矩阵的三维变换(转)
- NYOJ-6:喷水装置(一)
- 如何判断Unity3D角色动作播放结束
- 怎么查看网站是否被k
- dlopen与dlsym用法
- virsualbox设置全屏
- AndroidApp定位和规避内存泄露方法研究
- OpenCV新书<Mastering OpenCV with Practical Computer Vision Projects>
- 三维基本几何变换
- Keil C51大端模式与版本选择导致的仿真器Code size limit:2k
- OpenStack的高可用性构建
- C++中返回引用
- FAT文件系统原理