在C ++中,您获得了头文件(.h),(。lib)文件和(.dll)文件。
在Visual Studio中,您提供了在三个不同位置搜索这些文件的位置:
配置属性=> C / C ++ =>一般=>其他包含目录。 在这里列出了您想要搜索并可用的“包含”目录。
配置属性=>链接器=>一般=>其他库目录。 在这里列出了您想要搜索并可用的“lib”目录。
配置属性=>链接器=>输入=>其他依赖项。 在这里,您明确指定要包含的.lib文件。
问题是:
Q1:如果您已在#1中指定了头文件而在#2中指定了lib,那么为什么/何时需要在#3中指定任何内容?
Q2:我看到人们在#3中包含了一个特定的调试或发布版本的lib。你可以在#3中指定lib的调试版本或发行版本,还是在发布或调试模式下构建吗?理想情况下,应该在这里提供哪个版本的库调试/发布?
答案 0 :(得分:38)
- 配置属性=> C / C ++ =>一般=>其他包含目录。在这里列出了您想要搜索并可用的“包含”目录。
醇>
这告诉编译器在哪里查找括在尖括号中的头文件。这会影响编译器(或预处理器)的工作方式。
- 配置属性=>链接器=>一般=>其他库目录。在这里列出了要搜索并可用的“lib”目录。
醇>
这告诉链接器在哪里查找库(即要查看的目录)。这会影响链接器(而不是编译器)的工作方式。
- 配置属性=>链接器=>输入=>其他依赖项。在这里,您明确指定要包含的.lib文件。
醇>
这告诉链接器在这些目录中要查找哪些库。这也会影响链接器的工作方式。
Q1:通常如果你使用2,你几乎肯定也需要使用3。 3告诉它要链接的库,2告诉它在哪里找到该库。当然,它也可以是多个库。
Q2:如果同时提供了调试版和发行版库,那么通常希望在调试版本中使用调试版本,在发布版本中使用发行版本。在对话框的左上角,选择要修改的配置。通常,您需要为调试和发布指定目录,但是指定单个库,一个用于调试,一个用于发布。
答案 1 :(得分:4)
只是要指出显而易见的是,您不必在项目的属性设置中添加任何.h文件,因为您在源代码中明确地包含它们,这将在路径中查找标题你已经提供了。
答案 2 :(得分:2)
此外,在上述地方,当您添加目录时,请查看MACROS>>按钮。 例如您可能希望为32位/ 64位/发布和调试使用不同的库。您可以使用($ ProjectDir)MACRO来提供相对链接,例如($ DXSDK_DIR)MACRO以确保为您的directx开发获得正确的库。
所以我有($ DXSDK_DIR)\ Lib \ x86和($ DXSDK_DIR)\ Lib \ x64,当在32位和64位Windows操作系统之间移动进行开发时,这也解决了这个问题。
答案 3 :(得分:2)
关于你的Q2 ......
对于第三方库,我利用Visual Studio Build Command宏变量$(Platform)
和$(Configuration)
输入如下内容:
Y:\dev3\cpp\cryptopp\cryptopp561\$(Platform)\Output\$(Configuration);...
通过这种方式,您可以输入相同的行,Visual Studio替换宏变量并查看\cryptopp561\Win32\Output\Release\
或\cryptopp561\Win32\Output\Debug\
,具体取决于您有哪些配置。它实际上并没有节省太多的打字,但它有助于保持一致和准确。