三者含义
.h:头文件 —— 编译时需要
.lib:静态链接库/动态链接库的导入库 —— 链接时需要
.dll:动态链接库 —— 运行时需要
三者关系:
.h:声明函数接口
.dll:函数可执行代码
.lib:因为.lib有两个身份,分开讨论
- 如果作为动态链接库的导入库:告诉编译器,调用的函数在哪个dll文件中 —— 起到“桥梁”的作用。
- 如果作为静态链接库:函数的可执行代码也集成在其中。
导入库和静态库虽然都是以.lib作为结尾的,但是他们的区别很大,他们实质是不一样的东西。
静态库本身就包含了实际执行代码、符号表等;
而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息。
lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。