C++中使用库(静态链接)【C++学习笔记】

49 C++中使用库(静态链接)

主要主题:如何在我们的项目中使用外部库

如下是以二进制文件的形式进行链接(GLFW库),而不是获取实际依赖库的源代码并自己进行编译

🍅下载二进制文件

下载32-bit还是下载64-bit的文件,和实际的操作系统没有任何关系只和你的目标应用程序有关

  • 如果要编译的程序是作为X86也就是win32程序,那么就要32位的二进制文件
  • 如果在编译一个64位应用程序,那我就要64位的二进制文件

一定要把它们匹配起来!不然它们就无法进行链接

🍅库的结构

库通常包含有两部分:includeslibrary包含目录库目录(“包含目录”是一词,就是inlcude目录)

  • **包含目录(include目录)**是一堆我们需要使用的头文件,这样我们就可以实际使用预购建的二进制文件中的函数

  • 库目录(ilb目录)有那些预先构建的二进制文件,通常还分为两部分:动态库和静态库(并不是所有库都有这俩),由此可以选择是静态链接还是动态链接

    • 静态链接意味着这个库会被放到你的可执行文件中,它在你的exe文件中(或者其他操作系统下的可执行文件)

    • 动态链接在运行时被链接

      这俩的主要区别是:库文件是否被编译到exe文件中或者链接到exe文件中,还是一个单独的文件在运行时把它放到exe文件旁边或某个地方,然后exe文件可以加载它

静态链接在技术上更快,有好几种优化的方式可以用。故通常静态链接是最好的选择

后缀dll的文件是一种运行时的动态链接库,在动态链接时会用到

后缀dll.lib的文件是一种静态库,它是和dll一起用的,这样就不需要实际询问dll了,相当于记录了dll中所有函数和变量的地址,连接器可以直接链接到它们

后缀lib的文件就是静态链接库了。(静态库会比动态库大很多!)

🍅链接库的大概操作(具体于P49Cherno)

链接头文件

项目属性 -> 在C/C++下的general -> additional include directories(附加的包含(include)目录

(此处要注意配置(如debug,all configurations)和平台(如Win32)

然后把库的文件中的include文件夹的地址放到additional include directories下就可以了。放链接的时候可以直接把地址目录粗暴的丢上去(只实用于自己的电脑),也可以利用宏$(SolutionDir)获得解决方案的文件地址目录(相对路径),然后再在后面加地址就可以了(实用于所有人的电脑)

完成如上,就可以直接在写代码的时候#include <对应的头文件>了,但注意头文件里面只有一堆函数的声明,现在还没有具体的链接上库,所以此时的函数是用不了的

养成好习惯:如果头文件的东西在解决方案中的某个地方(或许是另一个项目),那就用引号来包括,如#include "easyx"

如果它是一个完全的外部依赖或者外部的库,不在vs和我实际的解决方案一起编译,那么就用尖括号,来表示它实际上是外部的,如#include <easyx>

链接库

项目属性 -> linker -> General -> Additional Library Directories(附加的库目录

然后放目录地址如上,$SolutionDir+库目录就好了

然后此时库目录中会有动态库和静态库,比如有glfw3.dll , glfw3.lib如果只用静态库glfw3.lib则除了上述操作外还需要:在 项目属性 -> linker -> Input -> Additional Dependencies 上加入glfw3.lib就可以了(记得要加分号与其他的分隔!)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值