Windows VS C++工程:包含目录、库目录、附加依赖项、附加包含目录、附加库目录配置与静态库、动态库的调用

本文详细介绍了在VisualStudio中配置C++工程时,如何设置头文件的附加包含目录、库目录以及静态和动态链接库的路径,包括头文件搜索顺序和不同类型的库调用方法。

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

利用Visual Studio编写C++工程文件时,时常需要自行配置自己编写的头文件、外部引用的静态链接库和动态链接库的路径,这时候需要在项目属性中进行配置。

1 包含目录/附加包含目录

#include < .h>中 .h的搜索目录。如果有XXX.h找不到,设置这个目录可以解决。

1.1 区别和作用

  1. 作用:预编译会从该目录查找头文件,可以直接#include<该目录中的头文件>.

  2. 区别:

  • 头目录搜索的优先级不同,顺序:1、源文件目录–>2、附加包含目录–>3、包含目录
  • 包含目录:修改了系统的include宏的值,是全局的;
  • 附加包含目录:用于当前项目,对其他项目没有影响。

编译器搜索头文件顺序:

  1. 如果#include使用双引号(“”)形式,它将首先搜索本地目录。现从包含#include语句的当前文件的所在目录开始搜索。若果失败,则从当前目录的父目并逐级往上搜索,直到最上层include文件所在的目录。
  2. 如果#include使用尖括号(<>)形式,或者使用双引号形式本地目录检索失败,它会按照/I选项(附加包含目录)指定的目录搜索。顺序是按照CL在命令行中遇到它们的顺序。
  3. INCLUDE环境变量指定的目录,即包含目录。

所以,对本项目自身的#include一定要用双引号,否则如果用尖括号,不会搜索本地目录,而是直接从附加包含目录开始搜索,自然就找不到本地的文件,然后报错。

1.2 设置路径

包含目录(Include Directories)

配置属性 → VC++目录 —>包含目录

D:\ProgramData\OCCI_InstantClient\instantclient_19_20\sdk\include

在这里插入图片描述在这里插入图片描述

附加包含目录(Additional Include Directories)

配置属性 → C/C++ → 常规 —>附加包含目录

2 库目录/ 附加库目录

寻找.lib文件的搜索目录

2.1 用途

作用:指明库文件所在的目录or路径,即寻找.lib文件的搜索目录
区别:优先级不同,先检索附加库目录,再检索库目录

2.2 设置路径

库目录(Library Directories)

位于:配置属性→ VC++目录→ 库目录

D:\ProgramData\OCCI_InstantClient\instantclient_19_20\sdk\lib\msvc\vc14

在这里插入图片描述

附加库目录(Additional Library Directories)

位于:配置属性→ 链接器→ 常规→ 附加库目录

D:\ProgramData\OCCI_InstantClient\instantclient_19_20\sdk\lib\msvc\vc14

3 附加依赖项

lib库(C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,.cpp,.cc,*.c会被打包成一个.lib文件,这样可以保护源代码)

3.1 用途

作用:指明依赖库文件的名称

3.2 设置路径

位于:配置属性 → 连接器 → 输入

Debug模式下选择带_d的lib,发布的时候需要改成相应的release不带_d的

oraocci19d.lib

在这里插入图片描述

4 注意运行库的设置

在这里插入图片描述

4 静态链接库调用方法

-(1) 要使用一个静态库,除了要include其头文件以外(附加包含目录),还要在链接过程中把lib加进去(附加库目录、附加依赖项)。

-(2)附加包含目录、附加库目录、附加依赖项的添加方法及说明:

① 附加包含目录—添加工程的头文件目录:
项目->属性->配置属性->C/C+±>常规->附加包含目录:加上头文件的存放目录;

② 附加库目录—添加文件引用的lib静态库路径:
项目->属性->配置属性->链接器->常规->附加库目录:加上lib文件的存放目录;

③ 附加依赖项—添加工程引用的lib文件名:
项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。

5 动态链接库的调用方法

在这里插入图片描述

(2)当需要向项目中添加.dll动态链接库时,直接将需要添加的.dll文件拖拽到项目生成的.exe所在的文件夹下即可(项目->属性->配置属性->常规->输出目录,可以看到.exe生成在哪个目录下)。

### 如何在 Visual Studio 2019 中配置包含目录目录 #### 方法一:通过项目属性设置 在 Visual Studio 2019 的 C++ 工程中,可以通过以下路径来手动配置包含目录目录: - **包含目录** 路径为 `VC++ 目录 -> 包含目录` 或者 `C/C++ -> 常规 -> 附加包含目录`。这两者的功能相同,均用于指定编译器查找头文件的位置[^1]。 - **目录** 路径为 `VC++ 目录 -> 目录` 或者 `链接器 -> 常规 -> 附加目录`。这些选项的作用是指定链接器查找静态或动态库文件的位置。 具体操作如下: 1. 打开目标项目的属性页(右键点击项目名称 -> 属性)。 2. 在左侧导航栏中定位到上述提到的路径之一。 3. 将所需的目录路径填入对应的输入框中,多个路径之间用分号 (`;`) 分隔。 #### 方法二:永久修改全局用户级配置 (推荐) 为了实现更高效的开发环境管理,可以利用 MSBuild 提供的功能,在用户的全局配置文件中统一定义包含目录目录。此方法适用于需要频繁切换不同工具链的情况,比如同时使用 OpenCV CUDA[^4]。 以下是具体的实施步骤: 1. 创建一个新的 XML 文件并命名为 `Microsoft.Cpp.Win32.user.props` 或 `Microsoft.Cpp.x64.user.props`,取决于目标平台架构。 2. 编辑该 `.props` 文件的内容,添加必要的 `<IncludePath>` `<LibraryPath>` 定义。例如: ```xml <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup> <!-- 添加自定义包含目录 --> <IncludePath>C:\path\to\your\include;$(IncludePath)</IncludePath> <!-- 添加自定义目录 --> <LibraryPath>C:\path\to\your\lib;$(LibraryPath)</LibraryPath> </PropertyGroup> <ItemDefinitionGroup /> <ItemGroup /> </Project> ``` 3. 将生成好的 `.props` 文件保存至 `%AppData%\Local\Microsoft\MSBuild\v4.0` 下。此时,无论创建任何新项目还是打开已有项目,都会自动加载这些预设的目录信息。 #### 解决常见错误:“无法解析外部符号” 当遇到 “LNK2019: unresolved external symbol” 类型的链接错误时,通常是因为缺少正确的文件或者未正确配置路径所致。按照前述两种方式进行适当调整即可解决问题。 ```cpp // 示例代码片段展示如何验证基本函数调用是否成功连接 #include <iostream> extern "C" void myFunction(); // 假设有这样一个外部声明 int main() { try { myFunction(); std::cout << "myFunction called successfully." << std::endl; } catch (...) { std::cerr << "Error calling myFunction!" << std::endl; } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大大枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值