动态链接库dll

DLL(Dynamic Link library):动态链接库,库中包含了由多个程序同时使用的代码和数据。

之所以使用DLL,从下面一张图就能大致看出。

DDL有助于多个程序共享代码和数据。

而我们传统所说的库,如<stdio.h>它们属于静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,编译链接可执行文件时,链接器从库中复制这些函数和数据并把他们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件)。

 

而动态库则不需要在编译过程中复制所有的内容,让每个程序一人一份。

在使用动态库的时候,往往提供两个文件:一个引入库和一个DLL。引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中的导出函数。

 

当然,使用DLL有很多优点,但缺点如版本不兼容,同时访问造成的冲突等等。

对于版本不兼容的问题,我们的解决方法是:在于编译程序时,由VS生成一个manifest文件,指明当前应用程序所使用的动态链接库版本号;发布程序时需同时发布该manifest文件。运行调用时,manifest会指定我们所用的动态链接库的版本。

posted @ 2016-11-24 18:24  zhazhalovecoding  阅读(151)  评论(0编辑  收藏  举报