Когда использовать Visual Studio Дополнительные зависимости?
В C++ вы получили заголовочные файлы (.h), (.lib) и (.dll).
В Visual Studio вы указываете место для поиска этих файлов в трех разных местах:
Свойства конфигурации => C/C++ => Общие => Дополнительно Включить каталоги. Здесь вы перечисляете каталоги "include", которые вы хотите найти и сделать доступными.
Свойства конфигурации => Linker => General => Дополнительные каталоги библиотеки. Здесь вы перечислите каталоги "lib", которые вы хотите найти и сделать доступными.
Свойства конфигурации => Linker => Input => Дополнительные зависимости. Здесь вы явно указываете.lib файлы, которые хотите включить.
Вопросы:
Q1: Если вы указали заголовочный файл в #1 и lib в #2, почему / когда вы хотите указать что-нибудь в #3?
Q2: Я вижу людей, включающих определенную отладочную или выпускную версию библиотеки в #3. Можете ли вы указать отладочную или выпускную версию библиотеки в #3 и по-прежнему выполнять сборку в режиме выпуска или отладки? В идеале, какая версия библиотеки отладки / выпуска должна быть представлена здесь?
4 ответа
- Свойства конфигурации => C/C++ => Общие => Дополнительно Включить каталоги. Здесь вы перечисляете каталоги "include", которые вы хотите найти и сделать доступными.
Это сообщает компилятору, где искать заголовочные файлы, заключенные в угловые скобки. Это влияет на работу компилятора (или препроцессора).
- Свойства конфигурации => Linker => General => Дополнительные каталоги библиотеки. Здесь вы перечислите каталоги "lib", которые вы хотите найти и сделать доступными.
Это сообщает компоновщику, где искать библиотеки (т.е. какие каталоги искать). Это влияет на работу компоновщика (а не компилятора).
- Свойства конфигурации => 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 для разработки.