孙鑫《vc++深入详解》第十九章动态链接库

19.1动态链接库概述

他们是是一些独立的文件,其中包括能被可执行程序或者其他DDL调用来完成某项工作的函数;

  • Windows API中所有的函数都包括在DDL中,其中 有三个最重要的DDL。
  • kernel32.dll:它包含那些用于管理内存,进程和线程的函数,例如CreateThread函数;
  • User32.dll:它包含那些用于执行用户界面任务(如窗口的创建和消息的传送)的函数,例如CreateWindow函数;
  • GDI32.dll:它包括那次额用于画图和显示文本的函数 

19.1.1静态库和动态库

  • 静态库

函数和数据被编译近一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译连接可执行文件时,连接器从库中复制这些函数和数据并把他们和应用程序的其他模块组合起来创建最终的可执行文件(。exe文件)。当发布产品是,只需要发布这个可执行文件,并不需发布这个被使用的静态库。

  • 动态库:

在使用动态链接库的时候,往往提供两个文件爱你:引入库文件(.LIB)文件和DLL(.dll)文件。引入库文件和静态链接库文件有本质的区别:对于一个DLL来说,其引入库文件(.LIB)包括该DDL导出的函数和变量的符号名,而.dll文件包含该dll实际的函数和数据。在使用动态库的情况下,在编译连接可执行文件,只需要连接该dll的引入库文件,该ddl中的函数代码和数据并不复制到可执行文件中,知道可执行程序运行时,才去加载所需要的dll,将该dll映射到进程地址空间中,然后访问dll中导出的函数,这时,在发布产品时,除了发布可执行文件以外,同时还要发布该程序将要调用的动态链接库。

19.1.3动态链接库的加载

  • 显示加载
  • 隐式加载

 

你可能感兴趣的:(孙鑫《vc++深入详解》第十九章动态链接库)