Windows以函数的形式为应用提供了各种功能。这些形式的函数称为API (应用程序接口)。例如,Samplel.c中调用的MessageBox0不是C语言的标准函数,而是Windows提供的API的一种。MessageBox()提供了显示消息框的功能。
Windows中,API的目标文件,并不是存储在通常的库文件中,而是存储在名为DLL文件的特殊库文件中。DLL文件是程序运行时动态结合的文件。
MessageBox()的目标文件是存储在import32.lib中的。import32.lib中仅仅存储着两个信息,①是MessageBox()在user32.dll这个DLL文件中,②是存储着DLL文件的文件夹信息,MessageBox()的目标文件的实体实际上并不存在。我们把类似于import32.lib这样的库文件称为导入库。
存储着目标文件的实体,并直接和EXE文件结合的库文件形式称为静态链接库。存储着sprintf()的目标文件的cw32lib就是静态链接库。sprintf()提供了通过指定格式把数值转换成字符串的功能。
通过结合导入库文件,执行时从DLL文件中调出的MessageBox()函数这一信息就会和EXE文件进行结合。这样,链接器链接时就不会再出现错误消息,从而就可以顺利编写EXE文件。
下图总结了Windows中的编译及链接机制: