静态库
函数和数据被编译进一个二进制文件(.LIB)。在使用静态库下,在编译连接可执行文件时,链接器从库中复制这些函数和数据,并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE)。当产品发布时,只需要发布可执行文件,不需要发布使用的静态库。
它的特点在于:
1.编译后的可执行文件包含了所需要的函数的代码,占用磁盘空间较大。(但是可以避免出现用户的电脑上没有你开发时所用的库的尴尬情形。)
2.如果多个调用相同库的进程在内存中同时运行,内存中会存放多份相同的代码。动态库在使用动态库的时候,往往提供两个文件:引入库(.lib)文件和DLL(.dll)文件。引入文件包含DLL导出的函数和变量的符号名,而.dll包含了该DLL的实际的函数和数据。再使用动态库的情况下,在编译连接可执行文件时,只需要连接该DLL的引入库文件,而该DLL的函数代码和数据并不复制到可执行文件中,知道可执行程序运行时,才加载所需的DLL,将该DLL映射到进程的地址空间中,然后访问DLL中导出的函数。此时,在发布产品时,除了发布可执行文件外,还要发布程序将要调用的动态链接库。使用动态库的好处在于能够节省磁盘空间和内存。如果多个应用程序需要访问同样的功能,那么可以将该功能以DLL的形式提供,这样一台机器上只需要存在一份该DLL就可以了,从而节省了磁盘空间。如果多个程序调用同一个DLL,该DLL的页面只需要存放在内存一次,所有的应用程序都可以共享它的页面了。
VC++(十九)动态链接库
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
- 2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员...
- 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
- 动态调用动态库方法c/c++linuxwindows 关于动态调用动态库方法说明 一、 动态库概述 1、 动态库的...