vs动态库生成过程中还存在静态库

为什么VS生成动态库dll同时还会生成lib静态库
动态库与静态库(Windows环境下)
​ 动态库和静态库都是一种可执行代码的二进制形式,可以被操作系统载入内存执行。

​ 静态库实际上是在链接时被链接到exe的,编译后,静态库会嵌入到生成的exe文件中,执行到静态库的内容时,在exe的内存中就能获取到相关内容,库本身不需要与可执行文件一起发行,但是因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件,生成的可执行文件较大。如果不同程序使用相同的静态库,静态库会分别被嵌入不同程序,造成空间浪费。并且如果静态库有任何更新,所有使用它的应用程序都要重新编译。

​ 动态库在程序编译时并不会链接到目标代码中,而是在程序运行时才被载入,并且不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题,同时态库在程序运行时才被载入,也解决了静态库对程序的更新、部署和发布带来的麻烦,可以做到局部更新而不用重新编译程序。

在VS生成动态库的项目中生成动态库dll同时还会生成lib文件
​ 在VS生成动态库的项目中生成动态库dll同时还会生成lib文件,这个lib文件并不是我们上面所说的静态库,而是一个导入库。exe执行到动态库内容时,需要跳到内存里的动态库区域,然后执行相关内容;这个动作就需要exe里面存在一个引路人,来告诉exe,这个函数是动态库的函数,需要跳到其他内存区域执行,而这个存在于exe的引路人就是动态库的.lib文件,因为.lib文件会编译进exe文件里,.dll文件不会被编译进exe里面;动态库的.lib文件只提供链接到动态库的功能,它本身不包含库的代码内容。
————————————————
版权声明:本文为CSDN博主「binveni」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/binveni/article/details/132677651

你可能感兴趣的:(c++)