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

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

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

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

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

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

Вопросы:

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

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

4 ответа

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам