实现C++ style的动态库函数加载器
来源:互联网 发布:java程序员的工作内容 编辑:程序博客网 时间:2024/06/08 08:15
动态库的动态加载在底层c运行库提供了三个函数 dlopen、dlsym、dlclose,非常简洁高效,但如果使用c++的方式,应该可以做到更好的易用性,或者更好的类型安全。
因此我们尝试了通过将动态库的导出方法通过定义类来固化,并且能使用c++模板来自动实现这些方法。
比如动态库memory.dll,包含了三个内存管理方法malloc,free,calloc,我们将这个库封装成了如下的Memory类:
struct Memory : DLL<Memory>{ IMPORT(malloc, (void*(*)(size_t))); IMPORT(free, (void(*)(void*))); IMPORT(calloc, (void*(*)(size_t,size_t)));};
通过这个Memory类,通过声明的方式固化了动态库导出函数信息,并且可以动态加载对应库并调用其方法了:
Memory::open("/usr/local/lib/memory.dll", RTLD_LAZY); //动态加载dll库 void *pBuff = Memory::malloc(1024); //调用动态库的导出方法 Memory::free(pBuff); Memory::close();
看起来是不是很酷:)
所有的秘密就藏在基类的DLL模板里,未完待续....
0 0
- 实现C++ style的动态库函数加载器
- 实现C++ style的动态库函数加载器(续)
- c库函数的实现
- 常用库函数的C实现
- C 字符串 库函数 的实现
- C库函数atoi的实现
- c库函数的简单实现
- C语言库函数的实现
- C 各种库函数的实现
- LINUX C语言:程序运行时动态加载库函数
- Linux c语言程序运行时动态加载库函数
- 常用C库函数的C实现
- C语言库函数strstr的实现
- C库函数strlen的三种实现。
- C语言一个库函数的实现
- C语言字符串库函数的实现
- C语言字符串库函数的实现
- C语言字符串库函数的实现
- 全局唯一标识分区表 - 维基百科,自由的百科全书
- Oracle session
- 写4个线程,两个对其加1,另外两个对其减1
- 启动-学习-思考
- 德阳一男子家中挖地窖囚禁前妻半个月
- 实现C++ style的动态库函数加载器
- C#中ref 在参数中的应用
- ASP.NET中System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏
- 简单的jsf实现
- 庞果网之素因子集合
- 牛的旅行--floyd算法
- 操作系统--------内存管理(2)
- git rebase和merge 区别和应用场景
- android nfc中Ndef格式的读写