.h和.lib和.dll文件的联系与区别
2014-06-05 20:33
204 查看
一:概念
a:.h文件(头文件,主要提供函数签名原型)b:.lib静态库(另一种作用导出文件或者中间文件)
c:.dll动态库
二:使用
当使用动态库dll的时候,有两种情况1,只有dll而没有.h和.lib而有api文档的情况下,可以通过LoadLibrary动态加载dll,并通过GetProcAddress来获取函数地址并使用。
2,有dll,有.h,有lib的话,在编译选项里正确链接lib,并在代码头文件中includ .h文件即可使用。
其中dll存储了函数具体的执行代码和资源,.h文件给出了函数的原型,.lib文件给出了函数在dll中的内存偏移地址。使用时dll与exe文件在同一目录即可
注意的是:此时的lib是导出文件或者叫中间文件,而不是静态库。
当使用静态库lib的时候,这个lib是包含了函数的执行代码的
只需要include h文件并在编译选项里正确链接lib即可。
当使用静态库lib的时候
首先在工程的链接选项里加入你要链接的lib文件,然后在你想用lib里面的函数时,用extern声明一下就行了,比如extern void my_function(),这样编译器遇到my_function这个函数时就会在你指定的lib中查找。
另外需要提一下的是,如果lib里面的函数是c写的,那么在c++中使用这些函数的时候需要这样声明:
extern "C" {extern void my_function()},这是因为c和c++在生成lib时对函数的命名规则不同,使用extern "C"是告诉编译器要按照C的命名规则来查找函数。
三:静态库与动态库的区别
静态链接是指在编译的时候就把模块的内容加载进来一起编译,这样编出来的exe文件包含了模块的内容,因此会比较大。而动态链接是指程序在运行时去加载模块中所需要的函数,exe文件与模块文件是分离的。一般来说,静态链接用的是lib文件,动态链接用的是dll文件。归根结底:二者都是为了降低软件的复杂度以及复用部分资源。
相关文章推荐
- QT总结第4篇:.lib和.dll文件的区别
- .dll .obj .lib .so .o .a文件的区别含义
- .dll动态链接库文件、h头文件、 .lib库文件之间的关系与联系
- dll、Lib、obj、.h文件的区别与作用
- 详解.htm.html.shtm.shtml文件后缀的区别与联系
- lib和dll文件的区别和联系
- lib和DLL区别和联系生成DLL
- lib和dll文件的区别和联系
- lib和dll文件的区别和联系
- lib和dll的区别与联系
- lib和dll文件的区别和联系
- 简要介绍什么是SDK,DLL与LIB区别联系
- DLL和LIB区别和联系.
- 文本文件和二进制文件的区别和联系
- lib和dll文件的区别和联系
- lib和dll文件的区别和联系
- lib和dll文件的区别和联系
- lib和dll文件的区别和联系
- NSF数据库文件和NTF模板文件的区别和联系
- lib和dll文件的区别和联系