0

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

1

В C++ вы имеете дело с заголовочными файлами (.h), библиотеками (.lib) и динамическими библиотеками (.dll).

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

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

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

  3. Свойства конфигурации ⇒ Компоновщик ⇒ Ввод ⇒ Дополнительные зависимости. Здесь вы явно указываете .lib файлы, которые хотите подключить.

Вопросы:

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

Q2: Я замечал, что некоторые разработчики указывают конкретную отладочную или релизную версию библиотеки в пункте #3. Можно ли указать либо отладочную, либо релизную версию библиотеки в пункте #3 и при этом собирать проект как в режиме релиза, так и в режиме отладки? Какую версию библиотеки (отладочную/релизную) следует указывать здесь в идеале?

4 ответ(ов)

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

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

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

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

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

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

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

Вопрос 2: Если предоставлены как отладочная, так и релизная версии библиотек, обычно вы хотите использовать отладочную версию в режиме отладки, а релизную версию в режиме релиза. В верхнем левом углу диалогового окна вы выбираете, какую конфигурацию хотите изменить. Обычно вы будете указывать директории для обеих конфигураций — отладки и релиза, но при этом указываете отдельные библиотеки: одну для отладки и одну для релиза.

0

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

0

Когда вы добавляете директорию в указанные выше места, обратите внимание на кнопку MACROS>>. Например, вам может потребоваться использовать разные библиотеки для 32-битных и 64-битных версий, а также для релиза и отладки. Вы можете использовать макрос ($ProjectDir) для указания относительного пути, а также макрос ($DXSDK_DIR), чтобы убедиться, что вы получаете правильные библиотеки для разработки на DirectX.

Таким образом, у меня есть пути ($DXSDK_DIR)\Lib\x86 и ($DXSDK_DIR)\Lib\x64, что также упрощает процесс при переходе между 32-битными и 64-битными версиями Windows для разработки.

0

Отвечая на ваш вопрос Q2...

Что касается сторонних библиотек, я использую макро-переменные команд сборки Visual Studio $(Platform) и $(Configuration), чтобы ввести что-то вроде этого:

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

Таким образом, вы можете просто ввести эту строку, и Visual Studio заменит макро-переменные, позволяя искать в папках \cryptopp561\Win32\Output\Release\ или \cryptopp561\Win32\Output\Debug\ в зависимости от активной конфигурации. Это не так уж сильно сокращает набор текста, но помогает сохранить консистентность и точность.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь