DLL文件及导入库

Windows以函数的形式为应用提供了各种功能 。这些形式的函数称为API (Application Programming Interface, 应用程序接口)。例如,Sample1.c中调用的MessageBox(),它并不是 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文件中调出的 MessageBox()函数这一信息就会和EXE文件进行结合。这样, 链接器链接时就不会再出现错误消息,从而就可以顺利编写EXE文件。至此,我们总结一下 Windows中的编译及链接机制。

posted @   sleeep  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示