C++基础-如何引入第三方静态库、动态库或自定义库

本文详细介绍了如何在C++项目中引入静态库和动态库,以VisualStudio为例,涵盖了附加包含目录、附加库目录和附加依赖项的设置,以及源代码引用库的方法。同时,文章提供了glfw库作为示例,展示了引入第三方库的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++基础-如何引入第三方静态库、动态库或自定义库

概述

C++作为比较老的开发语言,在依赖库的引入上并没有做到像现在Java、JS、C#含有依赖管理工具协助完成大部分内置库、第三方库的自动引入、下载、配置、补全等。
C++无论是内置库还是第三方库,都需要自己手动进行查找、配置、引入等工作。
本文即是帮助完成C++项目对于库、框架如何完成依赖引入达成可调用的目的,重点讲述开发工具Visual Studio中的操作,若是在命令行使用CMake链接库可参考以下链接中关于库、链接的配置说明:CMakeLists详解

静态库(.lib)

静态库引入适用用于大部分无开源的第三方库,开发者不需要关心库的具体实现如何,直接将库文件放到自己的项目里,引入进行调用即可,非常方便可靠。
无论库是否有开源,最终能通过生成或下载拿到静态库文件.lib和头文件.h即可使用静态库引入方式。步骤如下:

已编译好的库

使用glfw作为示例官方下载地址

  1. 将下载好的静态库文件glfw.libglfw.h按照想要的路径放置到解决方案里,例如【解决方案】\Dependencies\glfw\文件夹里;
  2. 在VS开发工具里打开应用程序项目属性(右键打开),找到C++》常规》附加包含目录,添加头文件所在基础路径$(SolutionDir)\Dependencies\glfw\;。注意第一是顶部要选择全部配置和全部平台,如果只选择了其中一种配置和平台可能会报错。其次是不要删除原本附加包含目录里已有的路径,只使用分号隔开,除非你确定那些路径已经不需要;
  3. 接着上一步,重新在属性里找链接器》常规》附加库目录,添加静态库文件所在基础路径$(SolutionDir)\Dependencies\glfw\;。之后找到链接器》输入》附加依赖项,添加静态库剩余路径glfw3.lib,基础路径和剩余路径合起来才是静态库的完整路径$(SolutionDir)\Dependencies\glfw\glfw3.lib
  4. 在需要使用该库的项目文件代码里引入头文件,路径根据第2步基础路径所决定,如#include <glfw3.h>指向的是$(SolutionDir)\Dependencies\glfw\glfw3.h
  5. 现在可以开始调用静态库里的方法了,代码示例:
#include <iostream>
#include <glfw3.h>
int main() {
  int a = glfwInit();
  std::cout << a << std::endl;
}

引用依赖库

适用于有源代码的库,例如第三方开源库,或者自己的库。
相比静态库有更好的灵活性,方便对库进行专门的优化或定制开发。
可以不放到当前解决方案里,直接作为单独项目生成静态库文件和头文件,然后按照上述方式引入静态库,也可以按照下面的方法,将源代码放到解决方案里作为单独一个库项目,让应用程序项目引入,这种方式的好处是根据应用程序需要修改库代码。

还是使用上一步有开源的glfw作为示例:

  1. 将下载好的库源代码放置到解决方案里,如放到【解决方案】\glfw\文件夹里;
  2. 在VS开发工具里打开该项目属性,找到常规》配置类型,将其选择为静态库(.lib),完成后按顺序点击下方应用Apply、确定OK按钮;
  3. 在VS开发工具里打开应用程序项目属性,找到C++》常规》附加包含目录,添加头文件所在基础路径$(SolutionDir)\glfw\src\;
  4. 接着在VS开发工具应用程序项目打开引用栏(项目右键选择添加》引用),里面可以看到当前解决方案下所有库项目,包括我们第2步配置glfw库项目的名称和路径,在想要依赖的库项目前面打钩,并点击下方确定OK;
  5. 在需要使用该库的项目文件代码里引入头文件glfw3.h,路径根据第2步基础路径所决定,如#include <glfw3.h>指向的是$(SolutionDir)\glfw\src\glfw3.h
  6. 现在可以开始调用引用依赖库的方法了,代码示例:
#include <iostream>
#include <glfw3.h>
int main() {
  int a = glfwInit();
  std::cout << a << std::endl;
}

动态库(.dll)

优点是可以大幅减少exe文件的大小,让库文件在多个exe文件之间共享,适用于需要发布多个应用的解决方案,例如同时包含执行程序、更新程序、修复程序多个exe文件的大型应用。
主要用于第三方库为主,虽然也可以用于自己的库项目,但考虑到静态库比动态库总体积更小更高效率来说,自己的库项目还是直接放到解决方案里添加引用依赖即可。

依旧使用glfw动态库作为示例:

  1. 将下载好的动态库glfw.dllglfw3dll.lib(动态库专用的链接文件)和glfw.h放到依赖下$(SolutionDir)\Dependencies\glfw\
  2. 在VS开发工具里打开应用程序项目属性,找到C++》常规》附加包含目录,添加头文件所在基础路径$(SolutionDir)\Dependencies\glfw\;
  3. 接着上一步,重新在属性里找链接器》常规》附加库目录,添加动态库文件所在基础路径$(SolutionDir)\Dependencies\glfw\;。之后找到链接器》输入》附加依赖项,添加静态库剩余路径glfw3dll.lib,基础路径和剩余路径合起来才是静态库的完整路径$(SolutionDir)\Dependencies\glfw\glfw3dll.lib
  4. 将动态库glfw.dll放到应用程序所生成的exe文件的旁边(否则点击exe直接运行时会报错找不到glfw.dll库);
  5. 在需要使用该库的项目文件代码里引入头文件,路径根据第2步基础路径所决定,如#include <glfw3.h>指向的是$(SolutionDir)\Dependencies\glfw\glfw3.h
  6. 现在可以开始调用动态库里的方法了,代码示例:
#include <iostream>
#include <glfw3.h>
int main() {
  int a = glfwInit();
  std::cout << a << std::endl;
}
### 如何在 Visual Studio 2022 中添加 C++ 第三方 #### 添加第三方的准备工作 确保已下载并解压所需的第三方至指定位置,建议安装路径不包含中文字符[^2]。 #### 设置 Include 路径 为了让编译器识别第三方中的头文件,在项目属性管理器中打开当前项目的属性页。导航到 **配置属性 -> VC++ 目录** 下设置 `Include` 目录: 1. 将光标置于 `Include` 目录框内; 2. 点击右侧的小按钮以编辑该目录列表; 3. 增加第三方所在文件夹路径作为新的条目; 此过程使得源码可以访问 `.h` 者 `.hpp` 文件来声明函数原型和类定义[^3]。 #### 设定 Library 路径与依赖项 同样是在 **配置属性 -> VC++ 目录** 页面下调整 `Library` 目录选项用于告知链接器查找静态动态链接 (.lib) 的地方: - 同样通过点击右边的小图标向 `Library` 目录添加相应路径; 接着转到 **链接器(Linker)** 分支下的 **输入(Input)** 子节点,修改 `附加依赖项(Additional Dependencies)` 字段加入实际使用的 .lib 文件名称(无需带扩展名),以便于链接阶段正确解析外部符号用[^1]。 #### 使用属性表简化多项目配置流程 对于频繁创建的新工程而言,重复上述步骤会变得繁琐。此时可利用 VS 提供的 属性表 (Property Sheet) 功能实现一次性设定共享参数的目的。创建一个通用的 .props 文件保存常用的第三方路径和其他必要设置,之后只需将其关联给各个新建工程项目即可自动继承这些预设值。 ```cpp // 示例:假设有一个名为 myLib.lib 的被成功引入后的简单测试程序 #include "myHeader.h" int main() { // 测试代码... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿卢说他遇到阿玮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值