h头文件 .lib库文件 .dll动态链接库文件关系

来源:互联网 发布:python 远程执行命令 编辑:程序博客网 时间:2024/05/22 13:44

1、.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。

2、若生成了DLL,则肯定也生成 LIB文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。

3、如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。

4、LIB文件的作用:告诉链接器调用的函数在哪个DLL中,函数执行代码在DLL中的什么位置,这也就是为什么需要附加依赖项 .LIB文件,它起到桥梁的作用。

5、如果生成静态库文件,则没有DLL,只有lib,这时函数可执行代码部分也在lib文件中。

6、lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称静态库”),另一种为动态连接库(DLL,以下简称动态库”)的导入库(Import Libary,以下简称导入库)。静态库本身就包含了实际执行代码、符号表等等,而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息。

7、动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了。有了导入库,你只需要链接导入库后按照头文件函数接口的声明调用函数就可以了。

8、静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。

9、在动态库的情况下,有两个文件,而一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。

原创粉丝点击