程序显式调用和隐式调用linux动态链接库(*.so)的区别。
来源:互联网 发布:淘宝手机秒杀技巧 编辑:程序博客网 时间:2024/05/18 03:28
我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态库的程序的体积要比使用静态库程序的体积小,并且使用动态库的程序在运行时必须依赖所使用的动态库文件(.so文件),而使用静态库的程序一旦编译好,就不再需要依赖的静态库文件了(.a文件)。
动态库的调用又分为显示和隐式两种方式,区别如下:
1、 隐式调用需要调用者写的代码量少,调用起来和使用当前项目下的函数一样直接;而显式调用则要求程序员在调用时,指明要加载的动态库的名称和要调用的函数名称。
2、隐式调用由系统加载完成,对程序员透明;显式调用由程序员在需要使用时自己加载,不再使用时,自己负责卸载。
3、由于显式调用由程序员负责加载和卸载,好比动态申请内存空间,需要时就申请,不用时立即释放,因此显式调用对内存的使用更加合理, 大型项目中应使用显示调用。
4、当动态链接库中只提供函数接口,而该函数没有封装到类里面时,如果使用显式调用的方式,调用方甚至不许要包含动态链接库的头文件(需要调用的函数名是通过dlsym函数的参数指明的),而使用隐式调用时,则调用方不可避免要加上动态库中的头文件,g++编译时还需要要用参数-I指明包含的头文件的位置。需要注意的是,当动态链接库中的接口函数是作为成员函数封装在类里面时,即使使用显式调用的方式,调用方也必须包含动态库中的相应头文件。
5、显式调用更加灵活,可以模拟多态效果。
转自:http://blog.csdn.net/lc_910927/article/details/42393121
- 程序显式调用和隐式调用linux动态链接库(*.so)的区别。
- linux下动态链接库(.so)的显式调用和隐式调用
- linux下动态链接库(.so)的显式调用和隐式调用
- linux下动态链接库(.so)的显式调用和隐式调用
- linux下动态链接库(.so)的显式调用和隐式调用
- linux下动态链接库(.so)的显式调用和隐式调用
- linux下动态链接库(.so)的显式调用和隐式调用
- linux下动态链接库的显式调用和隐式调用
- Linux 下动态链接库 *.so(生成、调用)
- 调用动态链接库*.so
- Linux下使用QT编写和调用动态链接库(.so文件)
- android源码环境下动态链接库so的隐式调用
- C++对dll链接库的显示(动态)调用和隐式(静态)调用
- 动态链接库的显式调用
- 动态链接库的隐式调用
- Linux下.so动态库的建立和调用
- linux下调用动态链接库so文件
- Linux下静态、动态库(隐式、显式调用)的创建和使用及区别
- SQLite3 ODBC连接串
- 有没有必要把机器学习算法自己实现一遍?
- 明白的deconv
- 2017年最受欢迎的编程难题网站集合,这些资源你一定要get!
- Spring中Bean的五个作用域
- 程序显式调用和隐式调用linux动态链接库(*.so)的区别。
- Ribbon负载均衡的使用方式与配置方式详解
- Qt实现任务栏中的托盘图标的功能.
- 使用神经网络进行逻辑回归
- String创建的原理
- ftell 获取文件位置,fseek 把文件指针移动到指定位置
- 登录窗口显示和事件函数
- Ubuntu 查看机器配置信息
- java中JFrame类中函数addWindowListener(new WindowAdapter)