0
点赞
收藏
分享

微信扫一扫

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

玉新行者 2022-04-15 阅读 84
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 <对应的头文件>了,但注意头文件里面只有一堆函数的声明,现在还没有具体的链接上库,所以此时的函数是用不了的

链接库

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

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

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

举报

相关推荐

0 条评论