今天把前段时间学习的DLL总结一下:
一,DLL(动态链接库)的介绍:
Microsoft公司自从推出第一个Windows程序以后,DLL就成为了Windows的一部分。DLL不能直接运行,也不能接收入信息,它们可以为其他的应用程序或DLL调用.
Windows API中所有的函数都包含在DLL中,其中有三个最主要的DLL文件:
1,Kernel32.dll:主要用于内存的管理,进程和线程的函数。如:CreateThread();
2,user32.dll:主要用于用户界面。如:MessageBox(); CreateWindow();
3,gdi32.dll:用于画图和显示文本。
二,动态链接库和静态链接库的介绍:
静态链接库:函数和数据被编译成一个二进制文件(通常扩展名为.lib)。在编译、链接可执行文件时,链接器把链接库中的函数和数据复制程序中和其他的程序进行组合,最终生成可执行文件中(.exe)。通常提供lib文件即可。
动态链接库:提供两个文件,一个“引入库”,一个DLL。引入库包括导出的函数名和变量,而DLL则包含了实际函数和数据。当编译、链接可执行文件时,只需链接引入库,并不会复制函数和数据。当可执行文件执行时会动态的加载DLL函数和数据。
三,使用动态链接库优点:
1,可以使用多种语言编写。如:c++,VB
2,可以进行程序的二次开发。
3,可以节省内存和磁盘空间。如:多个程序使用同一DLL
4,方便资源的共享。如:我们可以在多个应用程序中使用功能相同的DLL,共享资源DLL
5,有助于实现应用程序的本地化。如:多语言的支持
四,DLL加载的两种方式:
1,隐式链接
2,显示加载:
其他应用程序或链接库如果想要使用DLL中的函数或数据,必须要是DLL中声明导出的函数。可以用Dumbin工具(install catalog)查看。
如果这个工具不能使用,说明VS安装环境被破坏了,我们可以在安装目录下找到vcvars32.bat文件,执行此文件就可以了。