Подтвердить что ты не робот

Когда использовать дополнительные зависимости Visual Studio?

В С++ вы получили файлы заголовков (.h), файлы (.lib) и файлы (.dll).

В Visual Studio вы предоставляете местоположение для поиска этих файлов в трех разных местах:

  • Свойства конфигурации = > C/С++ = > Общие = > Дополнительные каталоги Include. Здесь вы перечисляете каталоги "включите", которые хотите найти и сделать доступными.

  • Свойства конфигурации = > Linker = > Общие = > Дополнительные каталоги библиотек. Здесь вы перечисляете каталоги "lib", которые хотите найти и сделать доступными.

  • Свойства конфигурации = > Linker = > Input = > Дополнительные зависимости. Здесь вы явно указываете файлы .lib, которые хотите включить.

Вопросы:

Q1: Если вы указали заголовочный файл в # 1 и lib в # 2, почему/когда вы хотите указать что-нибудь в # 3?

Q2: Я вижу людей, включая определенную версию отладки или выпуска lib в # 3. Можете ли вы указать либо отладочную версию, либо версию выпуска lib в # 3 и все еще строить в режиме выпуска или отладки? В идеале, какая версия библиотеки debug/release должна быть предоставлена ​​здесь?

4b9b3361

Ответ 1

  • Свойства конфигурации = > C/С++ = > Общие = > Дополнительные каталоги Include. Здесь вы перечисляете каталоги "включите", которые хотите найти и сделать доступными.

Это говорит компилятору, где искать заголовочные файлы, заключенные в угловые скобки. Это влияет на то, как компилятор (или препроцессор) выполняет эту работу.

  1. Свойства конфигурации = > Linker = > Общие = > Дополнительные каталоги библиотек. Здесь вы перечисляете каталоги "lib", которые хотите найти и сделать доступными.

Это говорит компоновщику, где искать библиотеки (то есть, какие каталоги искать). Это влияет на то, как выполняет компоновщик (а не компилятор).

  1. Свойства конфигурации = > Linker = > Input = > Дополнительные зависимости. Здесь вы явно указываете файлы .lib, которые хотите включить.

Это говорит компоновщику, какие библиотеки искать в этих каталогах. Это также влияет на то, как компоновщик выполняет свою работу.

Q1: Обычно, если вы используете 2, вам почти наверняка нужно использовать 3. 3 сообщает, с какой библиотекой связывается, и 2 сообщает, где найти эту библиотеку. Конечно, это может быть более чем одна библиотека.

Q2: Если предоставляется библиотека отладки и выпуска, вы обычно хотите использовать отладочную версию в сборке отладки и версию выпуска в сборке выпуска. В левом верхнем углу диалога вы выбираете, какую конфигурацию вы хотите изменить. Как правило, вы хотите указать каталоги для debug и release, но укажите отдельные библиотеки, один для debug и один для выпуска.

Ответ 2

И просто чтобы указать на очевидное, вам не нужно добавлять какие-либо файлы .h, которые вы используете в настройках свойств вашего проекта, потому что вы явно включаете их в свой исходный код, который ищет заголовки на путях вы уже предоставили.

Ответ 3

Кроме того, в указанных выше местах, когда вы добавляете в каталог, посмотрите на кнопку MACROS → . например вы можете использовать разные библиотеки для 32bit/64bit/Release и Debug. Вы можете использовать MACRO ($ ProjectDir) для предоставления относительной ссылки и, например, ($ DXSDK_DIR) MACRO, чтобы убедиться, что вы получаете правильные библиотеки для вашей разработки directx.

Итак, у меня есть ($ DXSDK_DIR)\Lib\x86 и ($ DXSDK_DIR)\Lib\x64, который также устраняет проблему при переходе между 32-битной и 64-битной ОС Windows для разработки.

Ответ 4

Относительно вашего 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\ в зависимости от того, какая конфигурация у вас активна. Это на самом деле не экономит много набрав, но помогает сохранить согласованность и точность.