何时使用Visual Studio附加依赖项?

use*_*834 48 c++ linker visual-studio

在C++中,您获得了头文件(.h),(.lib)文件和(.dll)文件.

在Visual Studio中,您提供了在三个不同位置搜索这些文件的位置:

  1. 配置属性=> C/C++ =>常规=>其他包含目录.在这里列出要搜索并可用的"包含"目录.

  2. 配置属性=>链接器=>常规=>其他库目录.在这里列出了要搜索并可用的"lib"目录.

  3. 配置属性=>链接器=>输入=>其他依赖项.在这里,您明确指定要包含的.lib文件.

问题是:

Q1:如果您已在#1中指定了头文件而在#2中指定了lib,那么为什么/何时需要在#3中指定任何内容?

Q2:我看到人们在#3中包含lib的特定调试版或发行版.你可以在#3中指定lib的调试版本或发行版本,还是在发布或调试模式下构建吗?理想情况下,应在此处提供哪个版本的库调试/发布?

Jer*_*fin 38

  1. 配置属性=> C/C++ =>常规=>其他包含目录.在这里列出要搜索并可用的"包含"目录.

这告诉编译器在哪里查找括在尖括号中的头文件.这会影响编译器(或预处理器)的工作方式.

  1. 配置属性=>链接器=>常规=>其他库目录.在这里列出了要搜索并可用的"lib"目录.

这告诉链接器在哪里查找库(即要查看的目录).这会影响链接器(而不是编译器)的工作方式.

  1. 配置属性=>链接器=>输入=>其他依赖项.在这里,您明确指定要包含的.lib文件.

这告诉链接器在这些目录中要查找哪些库.这也会影响链接器的工作方式.

Q1:一般来说,如果你使用2,你几乎肯定也需要使用3.3告诉它要链接的库,2告诉它在哪里找到该库.当然,它也可以是多个库.

Q2:如果同时提供了调试和发布库,您通常希望在调试版本中使用调试版本,在发布版本中使用发行版本.在对话框的左上角,选择要修改的配置.通常,您需要为调试和发布指定目录,但是指定单个库,一个用于调试,一个用于发布.

  • @ user205834:有几种可能性.首先,很多Boost是只有头文件的库 - 也就是说,所有代码都在头文件中,你不需要链接任何东西来使用它.其次,对于使用库的部分,它们通常使用`#pragma comment(lib,"libname")`来自动链接到库. (3认同)