Windows以函数的形式为应用提供了各种功能。这些形式的函数称为API (应用程序接口)。例如,Samplel.c中调用的MessageBox0,它并不是C语言的标准函数,而是Windows提供的API的一种。MessageBox()提供了显示消息框的功能。
Windows中,API的目标文件,并不是存储在通常的库文件中,而是存储在名为DLL(Dynamic Link Library)文件的特殊库文件中。就如Dynamic这一名称所表示的那样,DLL文件是程序运行时动态结合的文件。在前面的介绍中,我们提到MessageBox)的目标文件是存储在import32.lib中的。实际上,import32.lib中仅仅存储着两个信息,一是MessageBox()在user32.dll这个DLL文件中,另一个是存储着DLL文件的文件夹信息,MessageBox()的目标文件的实体实际上并不存在。我们把类似于import32.lib这样的库文件称为导入库。
与此相反,存储着目标文件的实体,并直接和EXE文件结合的库文件形式称为静态链接库。静态(static=静态的)同动态(dynamic=动态的)是相反的意思。存储着sprintf()的目标文件的cw32lib就是静态链接库。sprintf)提供了通过指定格式把数值转换成字符串的功能。
通过结合导入库文件,执行时从DLL文件中调出的MessageBox0函数这一信息就会和EXE文件进行结合。这样,链接器链接时就不会再出现错误消息,从而就可以顺利编写EXE文件。
下图总结了Windows中的编译及链接机制:
标签:及导,文件,存储,8.6,Windows,MessageBox,DLL,入库 From: https://www.cnblogs.com/2674308160-lucky/p/17097255.html