何时使用Visual Studio其他依赖关系?

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

在Visual Studio中,您可以在三个不同的位置提供search这些文件的位置:

  1. configuration属性=> C / C ++ =>常规=>其他包含目录。 在这里列出你想要search和提供的“包含”目录。

  2. configuration属性=>链接器=>常规=>其他库目录。 在这里列出你想要search和提供的“lib”目录。

  3. configuration属性=>链接器=>input=>其他依赖项。 在这里您明确指定要包含的.lib文件。

问题是:

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

问题2:我看到人们在#3中包含一个特定的debugging版本或发行版本。 你可以在#3中指定一个lib的debugging版本还是发行版本,并且仍然可以在发行版或debugging模式下生成? 理想情况下,应在此处提供哪个版本的库debugging/发行版?

  1. configuration属性=> C / C ++ =>常规=>其他包含目录。 在这里列出你想要search和提供的“包含”目录。

这告诉编译器在哪里查找包含在尖括号中的头文件。 这影响了编译器(或预处理器)是如何工作的。

  1. configuration属性=>链接器=>常规=>其他库目录。 在这里列出你想要search和提供的“lib”目录。

这告诉链接器在哪里寻找库(即,看什么目录)。 这会影响链接器(而不是编译器)的工作。

  1. configuration属性=>链接器=>input=>其他依赖项。 在这里您明确指定要包含的.lib文件。

这告诉链接器在这些目录中查找哪些库。 这也影响了链接器如何工作。

Q1:通常如果你使用2,你几乎肯定需要使用3。 3告诉它连接什么库,2告诉它在哪里find这个库。 当然,它也可以不止一个图书馆。

Q2:如果同时提供debugging和发布库,则通常希望在debugging版本中使用debugging版本,在发布版本中使用发行版本。 在对话框的左上angular,select要修改的configuration。 通常情况下,您需要为debugging和发布指定目录,但指定单独的库,一个用于debugging,另一个用于发布。

只是要指出显而易见的是,您不必在项目的属性设置中添加您正在使用的任何.h文件,因为您明确地将它们包含在源代码中,该源代码将查找已经在path中的标题提供。

另外,在上面的那些地方,当你添加一个目录时,看看MACROS >>button。 例如,您可能想要使用32位/ 64位/版本和debugging的不同库。 您可以使用($ ProjectDir)MACRO给出一个相对的链接,例如($ DXSDK_DIR)MACRO,以确保为您的directx开发获得正确的库。

所以我有($ DXSDK_DIR)\ Lib \ x86和($ DXSDK_DIR)\ Lib \ x64这也解决了在32位和64位Windows操作系统之间移动的问题。

关于你的Q2 …

对于第三方库,我利用Visual Studio Build Commandmacrosvariables$(Platform)$(Configuration)input如下内容:

 Y:\dev3\cpp\cryptopp\cryptopp561\$(Platform)\Output\$(Configuration);... 

通过这种方式,您可以input相同的准确行,并使用Visual Studioreplacemacrosvariables,并根据您激活的configuration查看\cryptopp561\Win32\Output\Release\\cryptopp561\Win32\Output\Debug\ 。 它实际上并没有节省太多的input,但它有助于保持事物的一致性和准确性