您的位置:首页 > 其它

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

2017-03-26 23:57 316 查看
之前最头疼的问题,一定要查清楚。

1,.h是函数声明的接口,仅仅是接口

2,.dll中有函数的可执行代码

3,.lib分两种情况,分别对应静态链接(lib是静态库)与动态链接(动态链接的导入库import library)

然后:如果程序是静态链接,那么只需要h与lib文件,lib文件中含有函数代码;如果是动态链接,那么lib作为导入库,其中没有函数实现代码,只有函数的地址表等信息,方便在dll文件中找到函数的实现。他起到桥梁作用。

.h是编译时需要的,.lib是链接时需要的,.dll是运行时候需要的。

dll的现实链接与隐式链接:

对于dll有没有对应的lib导入库,分为两种情况,要是有lib,那么程序会直接隐式加载,要是没有lib,那么就需要手动LoadLibrary调入dll文件,然后再GetProcAddress获得函数地址,即显式链接。

所以说,有了lib,只需要链接导入库后直接利用函数声明进行调用即可,没有lib就需要显氏地调用了。

若生成了dll,则肯定会生成lib文件,如果要完成代码的编译与链接,只需要.h .lib就够了,如果要使动态链接库的程序运行起来,那么就需要dll文件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 library dll