头文件,库文件与链接

一 Windows下的头文件,库文件

1.怎样通过h文件调用对应的dll文件

    这就时导入库lib的作用:告诉链接器调用的函数在哪个dll中,函数执行代码在dll中的什么位置。

2.两种lib库:静态库与导入库

    .lib后缀的库有两种,一种为静态链接库(Static Library),另一种为动态链接库的导入库(Import Library)

    (1)静态库

    静态库是一个或多个obj文件的打包,静态库本身包含实际执行代码、符号表等。

    (2)导入库

    动态库一般会有对应的导入库,方便程序静态载入动态链接库。导入库只包含地址符号表等,确保程序找到对应函数的一些基本地址信息。其实际执行代码位于动态库中。

3.静态库和动态库的区别

    (1)动态库有lib文件和dll文件,lib文件一般是一些索引信息,包含dll导出的函数的名称和位置,具体的实现在dll文件中,应用程序使用lib文件链接到所需要的dll文件,库中的函数和数据并不复制到可执行文件。lib文件必须在编译期就链接到应用程序中,而dll文件是运行期才会被调用。

    动态链接把函数所在文件模块(dll)和调用函数在文件中的位置等信息链接进目标程序。运行时再从dll中寻找相应函数代码。

    (2)静态库只有lib文件,索引和实现都在其中  。

    静态库会把文件中用到的函数代码直接复制到目标程序中,程序运行时不再需要库文件。

二 Linux下的头文件和库文件

    头文件一般是声明和定义,库文件是已经编译好的二进制代码。动态库为.so,静态库为.a。

1.常出现的错误

    (1)undefined reference to 'xxx'

    (2)/usr/bin/ld : cannot find -lxxx

    这两个问题是找不到库文件的问题。

    (3)xxx.h: No such file or directory

    该问题是找不到头文件的问题。

2.头文件相关

    (1)头文件的作用

    头文件是应用程序和函数库之间的桥梁和纽带。

    头文件的主要作用在于多个代码文件全局变量或函数的重用、防止重定义的冲突,对各个被调用函数给出一个描述,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。

   (2) -I参数指定头文件目录。

3.库文件相关

    (1)头文件只有函数声明,函数的实现在哪?在函数库中,链接时要指令程序链接的库。

    (2)-L 指定库文件所在目录

    (3)-ltest 指定库文件libtest,其它类似

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值