Как указать путь к библиотеке visual studio

Обновлено: 07.07.2024

Тема 5.1. Подключение библиотеки SFML в Visual Studio и CODEBLOCKS

В мире достаточно много программистов, которые готовы поделиться результатами своего труда с коллегами. Часто это просто команда единомышленников, которые начинают создавать продукт для своей команды, а затем пускают его в "свободное плавание", хотят поделиться удачной реализацией алгоритмов или самоутвердиться. Другим часто встречающимся случаем является публикация результатов научной или какой-либо другой академической деятельности.

Свободно распространяемых и закрытых библиотек очень много. Поэтому, в целях экономии времени, более оправданным является использовать уже готовых библиотек функций и классов, нежели создавать все "с нуля".

Обычно библиотеку подключают к какому либо проекту, прописывая пути к файлам библиотеки в настройках проекта. Это довольно-таки простой процесс. Для этого необходимо выполнить несколько действий:

  • Получить архив с бинарными файлами библиотеки и распаковать его в какой-нибудь локальный каталог.
  • Прописать в настройках IDE пути к каталогам библиотеки: include и lib

Далее можно создать шаблон проекта специально для данной библиотеки, чтобы при создании нового файла с исходными текстами не повторять каждый раз одни и те же действия.

Создайте на пользовательском диске каталог с именем SFML_Lib и распакуйте в него соответствующий архив. В каталоге юудут представлены следующие подкаталоги:


В каталогах lib и include располагаются файлы, необходимые на этапе компиляции программ. Пути к этим каталогам следует прописать в настройках проекта.

В каталоге doc располагается документация к библиотеке на английском языке

В каталоге examples располагаются примеры готовых приложений, написанных с использованием библиотеки SFML.

Подключение библиотеки в Visual Studio

Создайте простой консольный проект Win32. Затем откройте настройки проекта Project – <Имя вашего проекта> Properties. . Для подключения файлов, необходимых для разработки, установите значения свойств так, как показано на рисунках:

Использование скачанных библиотек с помощью vcpkg

Если вы хотите использовать скачанную библиотеку с помощью диспетчера пакетов vcpkg, то приведенные ниже инструкции можно пропустить. Дополнительные сведения см. на странице о vcpkg.

Использование статических библиотек

Если проект статической библиотеки был создан в том же решении:

Если статическая библиотека не входит в состав решения:

  1. Щелкните правой кнопкой мыши узел проекта приложения в обозревателе решений и выберите Свойства.
  2. На странице свойств Каталоги VC++ добавьте в раздел Пути библиотек путь к каталогу, который содержит LIB-файл. Затем добавьте в раздел Включаемые каталоги путь к файлам заголовков библиотеки.
  3. На странице свойств Компоновщик > Ввод добавьте имя LIB-файла в раздел Дополнительные зависимости.

Библиотеки динамической компоновки

Если библиотека DLL была собрана в рамках того же решения, что и приложение, выполните те же действия, что и для статической библиотеки.

Если библиотека DLL не входит в состав решения приложения, вам потребуются DLL-файл, заголовки с прототипами для экспортируемых функций и классов, а также LIB-файл, содержащий необходимую для компоновки информацию.

  1. Скопируйте DLL-файл в папку выходных данных проекта или другую папку, которая задана в качестве стандартной для поиска библиотек DLL в Windows. См. раздел Порядок поиска библиотеки динамической компоновки.
  2. Выполните шаги с 1 по 3 для статических библиотек, чтобы задать пути к заголовкам и LIB-файлу.

COM-объекты

Свойства ссылки

Каждый тип ссылки имеет свойства. Свойства можно просмотреть, выбрав ссылку в обозревателе решений и нажав клавиши Alt + ВВОД. Также можно щелкнуть ссылку правой кнопкой мыши и выбрать пункт Свойства. Одни свойства доступны только для чтения, другие можно изменять. Тем не менее обычно эти свойства не требуется изменять вручную.

Свойства ссылки ActiveX

Свойства ссылки ActiveX доступны только для компонентов COM. Данные свойства отображаются только тогда, когда в панели Ссылки выбран компонент COM. Эти свойства нельзя изменить.

Управление полным путем

Отображает путь к каталогу элемента управления, на который указывает ссылка.

GUID элемента управления

Отображает GUID для элемента управления ActiveX.

Версия элемента управления

Отображает версию элемента управления ActiveX, на который указывает ссылка.

Имя библиотеки типов

Отображает имя библиотеки типов, на которую указывает ссылка.

Средство программы-оболочки

Отображает средство, которое используется для создания сборки взаимодействия из указанной библиотеки COM или элемента управления ActiveX.

Свойства ссылки на сборку (C++/CLI)

Относительный путь

Отображает относительный путь от каталога проекта к сборке, на которую указывает ссылка.

Свойства сборки

Следующие свойства доступны для различных типов ссылок. Они позволяют задавать способ построения со ссылками.

Копировать локальные

Указывает, следует ли автоматически копировать сборку, на которую указывает ссылка, в целевое расположение во время сборки.

Копировать локальные вспомогательные сборки (C++/CLI)

Указывает, следует ли автоматически копировать вспомогательные сборки ссылочной сборки в целевое расположение во время сборки. Используется, только если для параметра Копировать локальные задано значение true .

Выходные данные ссылочной сборки

Указывает, что эта сборка используется в процессе сборки. true означает, что эта сборка используется в командной строке компилятора во время выполнения сборки.

Свойства ссылок проектов на проекты

Следующие свойства определяют ссылку проекта на проект из проекта, выбранного в панели Ссылки, на другой проект в том же решении. Дополнительные сведения см. в статье Управление ссылками в проекте.

Компоновать зависимости библиотек

Если это свойство имеет значение True, система проектов установит в зависимом проекте связь с LIB-файлами, создаваемыми независимым проектом. Обычно устанавливается значение True.

Идентификатор проекта

Уникальный идентификатор независимого проекта. Значение свойства — это GUID внутренней системы, который невозможно изменить.

Использовать входные данные зависимостей библиотек

Если это свойство имеет значение False, система проектов не установит в зависимом проекте связь с OBJ-файлами для библиотеки, созданной независимым проектом. Таким образом, это значение отключает инкрементную компоновку. Обычно указывается значение False, так как при наличии множества независимых проектов сборка приложения может занять длительное время.

Имя сборки

Отображает имя сборки для сборки, на которую указывает ссылка.

Язык и региональные параметры

Отображает язык и региональные параметры выбранной ссылки.

Описание

Отображает описание выбранной ссылки.

Полный путь

Отображает путь к каталогу сборки, на которую указывает ссылка.

Удостоверение

Label

Отображает метку ссылки.

Name

Отображает имя ссылки.

Токен открытого ключа

Отображает токен открытого ключа для идентификации сборки, на которую указывает ссылка.

Строгое имя

true , если сборка, на которую указывает ссылка, имеет строгое имя. Сборка со строгим именем имеет уникальную версию.

В качестве примера мы рассмотрим подключение библиотеки SDL к нашему проекту в Visual Studio 2017 (работать будет и с более новыми версиями Visual Studio).

Шаг №1: Создаем папку для хранения библиотеки

Создаем папку Libs на диске C ( C:\Libs ).

Шаг №2: Скачиваем и устанавливаем библиотеку



Шаг №3: Указываем путь к заголовочным файлам библиотеки

Открываем свой любой проект в Visual Studio или создаем новый, переходим в "Обозреватель решений" > кликаем правой кнопкой мыши (ПКМ) по названию нашего проекта > "Свойства" :


В "Свойства конфигурации" ищем вкладку "С/С++" > "Общие" . Затем выбираем пункт "Дополнительные каталоги включаемых файлов" > нажимаем на стрелочку в конце > "Изменить" :


В появившемся окне кликаем на иконку с изображением папки, а затем на появившееся троеточие:


Заголовочные файлы находятся в папке include внутри нашей библиотеки, поэтому переходим в нее ( C:\Libs\SDL2-2.0.9\include ) и нажимаем "Выбор папки" , а затем "ОК" :



Шаг №4: Указываем путь к файлам с реализацией библиотеки

Переходим на вкладку "Компоновщик" > "Общие" . Ищем пункт "Дополнительные каталоги библиотек" > нажимаем на стрелочку в конце > "Изменить" :


Опять же, нажимаем на иконку с папкой, а затем на появившееся троеточие. Нам нужно указать следующий путь: C:\Libs\SDL2-2.0.9\lib\x86 . Будьте внимательны, в папке lib находятся две папки: x64 и x86 . Даже если у вас Windows разрядности x64, указывать нужно папку x86 . Затем "Выбор папки" и "ОК" :


После этого переходим в "Компоновщик" > "Ввод" . Затем "Дополнительные зависимости" > нажимаем на стрелочку в конце > "Изменить" :


В появившемся текстовом блоке вставляем:


Затем переходим в "Компоновщик" > "Система" . После этого "Подсистема" > нажимаем на стрелочку вниз > выбираем "Консоль (/SUBSYSTEM:CONSOLE)" > "Применить" > "ОК" :



Шаг №5: Копируем dll-ку в папку с проектом

Переходим в папку x86 ( C:\Libs\SDL2-2.0.9\lib\x86 ), копируем SDL2.dll и вставляем в папку с вашим проектом в Visual Studio. Чтобы просмотреть папку вашего проекта в Visual Studio, нажмите ПКМ по названию вашего проекта > "Открыть содержащую папку" :


Затем вставляем скопированный файл (SDL2.dll) в папку с проектом (где находится рабочий файл .cpp):


Шаг №6: Тестируем

Теперь, чтобы проверить, всё ли верно мы сделали — копируем и запускаем следующий код:

Как же подключить/загрузить внешнюю динамическую библиотеку в свою программу/проект, написанную на языке программирования C++ в IDE Microsoft Visual Studio, в ОС Microsoft Windows?

Состав

Типы файлов

Для начала, давайте разберёмся, что обычно представляет собой любая динамическая библиотека, написанная на, и созданная для программ С++? Это от 1 до 4 типов файлов:

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

Количество

У одной библиотеки может быть множество файлов таких типов. Все они, обычно, рассортированы по соответствующим папкам, чтобы было легче подключать в IDE.

Вариации

Файлы dll, lib и exp различаются по платформе (ОС), архитектуре, конфигурации, etc. В одной версии библиотеки может предоставляться сразу несколько альтернативных вариаций одинаковых по функционалу файлов. E.g.:

Всё это крайне важно, всё надо учитывать при подключении библиотеки к проекту. Свойства проекта в Visual C++ могут устанавливаться отдельно для каждой конфигурации (Release, Debug) и архитектуры/платформы (x32 (x86), x64).

Подключение

Перед тем, как подключать файлы библиотеки к своей программе, надо сперва открыть необходимый проект в IDE Visual Studio: Главное меню > Файл > Открыть проект.

Заголовочные файлы (.h)

Файлы таблиц импорта и экспорта (.lib, .exp)

Файл таблицы импорта (.lib)

Помимо указания IDE директории расположения файлов таблиц импорта (.lib), их также для линковки надо дополнительно явно указать. Сделать это можно двумя способами:

      Прописать полные названия (путь, название и расширение) .lib файлов сюда: Главное меню > Проект > Свойства проекта > Свойства конфигурации > Компоновщик > Ввод > Дополнительные зависимости. Каждая библиотека в отдельной строке. Кавычки необязательны.
      В итоге они будут вписаны автоматически в строку в двойных кавычках через точку с запятой (;). E.g.:

    Можно использовать сразу два способа.

    Я рекомендую использовать второй вариант, когда все подключения пишутся непосредственно в коде. Так нагляднее и переносимость кода увеличивается, когда всё, что нужно написано в самом коде, а не где-то там в настройках IDE.

    Файлы библиотек (.dll)

    Параметры конфигурации препроцессора

    Также не забывайте указывать параметры конфигурации препроцессора тут: Главное меню > Проект > Свойства проекта > Свойства конфигурации > C/C++ > Препроцессор > Определения препроцессора. Параметры являются комбинированием в определённой последовательности определённых литералов. Вот некоторые из них:

    Некоторые возможные варианты параметров:

    • MT_StaticRelease
    • MTd_StaticDebug
    • MD_DynamicRelease

    Это далеко не все возможные параметры.

    Примечания

    Пути директории указывать без конечного слеша.

    Опция Компоновщик
    Библиотеки

    Заключение

    На самом деле, подключать сразу столько всего зачастую не нужно. Как правило, предоставляется только исходный код и всё. Приходится самостоятельно из исходников компилировать библиотеки (файлы .dll и .lib). Т.е. нужно будет указать только заголовочные файлы .h, которые являются частью исходников.

    Прежде всего, создадим новое Решение (Solution), в которое включим первый Проект (Project) данной лабораторной работы. Последовательно выполните следующие шаги:

    \rightarrow

    1. Запустите приложение Microsoft Visual Studio 2010.
    2. В меню File выполните команду NewProject….
    3. Как показано на рис. 6.11, в диалоговом окне New Project в типах проекта выберите Win32, в шаблонах Win32 Console Application, в поле Name введите название проекта (для каждого приложения будет использовано свое название), в поле Solution Name – название решения 01_OpenCV, в поле Location укажите путь к папке с лабораторными работами. Нажмите OK.

    Создание решения для лабораторной работы


    Рис. 6.11. Создание решения для лабораторной работы

    Далее создадим заготовку функции main() с параметрами командной строки. Как правило, в разрабатываемых приложениях в качестве параметров будет приниматься название изображения или видео, а также параметры тех или иных алгоритмов.

    3.2. Настройка свойств проекта

    Процесс настройки свойств проекта сводится к выполнению трех действий:

    Окно свойств проекта для установки путей до заголовочных файлов подключаемых библиотек


    Рис. 6.12. Окно свойств проекта для установки путей до заголовочных файлов подключаемых библиотек

    Окно свойств проекта для установки путей до подключаемых библиотек


    Рис. 6.13. Окно свойств проекта для установки путей до подключаемых библиотек

    Окно свойств проекта для установки списка подключаемых библиотек


    Рис. 6.14. Окно свойств проекта для установки списка подключаемых библиотек

    3.3. Подключение заголовочных файлов в исходном коде приложения

    Чтобы использовать функции библиотеки OpenCV при разработке собственных приложений, достаточно подключить заголовочный файл opencv.hpp , содержащий подключение большинства установленных модулей библиотеки, и пространство имен cv , в которое заключены все функции библиотеки.

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

    3.4. Компиляция и запуск программы. Возможные проблемы и пути их решения

    Чтобы протестировать корректность настроек, подключите заголовочные файлы библиотеки OpenCV в файл main.cpp в соответствии с указаниями раздела 3.3 и скомпилируйте программу посредством нажатия клавиши F7, или используя пункт Build главного меню.

    В процессе компиляции могут возникнуть следующие проблемы:

    1. Ошибка открытия заголовочного файла. Примерный текст ошибки приведен ниже. Суть проблемы состоит в том, что указаны неправильные пути до подключаемых заголовочных файлов библиотеки. Решение – проверить в настройках проекта корректность путей до заголовочных файлов (см. указания раздела 3.2).

    Когда программа скомпилировалась, запустите ее. Для этого можно нажать сочетание клавиш Ctrl+F5, либо воспользоваться пунктом Start Without Debugging главного меню. При попытке запуска может возникнуть ошибка, показанная на рисунке (рис. 6.15).

    Ошибка исполнения

    Проблема в том, что при исполнении выполняется поиск dll-файлов библиотеки OpenCV, и среда не находит указанные бинарные файлы. Существует два варианта решения данной проблемы:

    1. Задать в переменной окружения PATH пути до dll-файлов библиотеки OpenCV. В зависимости от способа установки библиотеки пути необходимо указать тот или иной путь (см. разделы 2.2 или 2.3).
    2. Скопировать указанный dll-файл к исполняемым файлам программы. Очевидно, что такой dll-файл будет не единственный, поэтому требуется последовательно копировать запрашиваемые файлы. Заметим, что если библиотека OpenCV собрана с поддержкой параллелизма, то также потребуется скопировать dll-файлы библиотеки Intel Threading Building Blocks ( tbb_debug.dll, tbbmalloc_debug.dll или tbb.dll, tbbmalloc.dll ), при условии, что TBB не установлена на рабочей машине, либо переменная окружения PATH не содержит путь до dll-файлов, входящих в ее состав.

    Вопросы и ответы

    При прохождении теста 1 в нем оказались вопросы, который во-первых в 1 лекции не рассматривались, во-вторых, оказалось, что вопрос был рассмаотрен в самостоятельно работе №2. Это значит, что их нужно выполнить перед прохождением теста? или это ошибка?

     \begin</p>
<p> <|c|c|c|>\hline \\ 0 & 0 & 0 \\ \hline \\ 0 & 2 & 0 \\ \hline \\ 0 & 0 & 0 \\ \hline \end - \frac \begin <|c|c|c|>\hline \\ 0 & 0 & 0 \\ \hline \\ 0 & 1 & 0 \\ \hline \\ 0 & 0 & 0 \\ \hline \end

    В описании говорится, что он "делает изображение более чётким, потому что, как видно из конструкции фильтра, в однородных частях изображение не изменяется, а в местах изменения яркости это изменение усиливается".

    Что вижу я в конструкции фильтра (скорее всего ошибочно): F(x, y) = 2 * I(x, y) - 1/9 I(x, y) = 17/9 * I(x, y), где F(x, y) - яркость отфильтрованного пикселя, а I(x, y) - яркость исходного пикселя с координатами (x, y). Что означает обычное повышение яркости изображения, при этом без учета соседних пикселей (так как их множители равны 0).

    Объясните, пожалуйста, как данный фильтр может повышать четкость изображения?

    Читайте также: