概述
动态链接库通常不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能够被可执行程序或者其他DLL调用来完成某项工作的函数。在实际编程时,可以把完成某种功能的函数放在一个动态链接库中,然后提供给其他函数调用。
Windows API中所有的函数都包含在DLL中,其中有3个最重要的DLL:
Kernel32.dll:包含管理内存,进程,线程的函数;
User32.dll:包含执行用户界面任务(如窗口的创建以及消息的发送)的函数;
GDI32.dll:包含用户画图和显示文本的函数。
静态库和动态库:
静态库:
函数和数据被编译进一个二进制文件(扩展名为”.LIB”),在编译链接可执行文件时,静态库中函数和数据被导入最终的可执行文件中。在发布时,只需要发布可执行文件即可。
动态库:
使用动态库包括两个文件,引入库(.lib)和DLL(.dll)。引入库文件包含该DLL导出的函数和变量的符号名,而DLL文件包含实际的函数和数据。在编译链接可执行文件时,只要链接该DLL的引入库文件,DLL中的函数和数据在执行时才加载。在发布时还要发布动态链接库。
从DLL中导出函数:在每一个被导出的函数前添加标识符:_declspec(dllexport)(有头文件时在函数申明时添加,无头文件时在函数定义时添加)。
动态库导出信息查看方式
VC提供的两个辅助命令:
1. Dumpbin命令,格式:dumpbin–exports name.dll
Tips1:Dumpbin.exe位于VisualStudio安装目录下的VC98\bin目录下。该目录下还有一个批处理文件:VCVARS32.bat,该文件用来建立VC++使用的环境信息。如果在其他目录下无法执行Dumpbin命令,可能是Visual Studio安装环境信息被破坏了,可以运行VCVARS32.bat批处理文件就可以执行了。但是该文件所设置的环境信息只对当前命令行窗口生效。如果关闭该窗口,需重新运行运行批处理文件。
Tips2:在命令行界面下选中数据,按下回车键即可实现数据的复制功能。