Как подключить библиотеку в visual studio c
Тема 5.1. Подключение библиотеки SFML в Visual Studio и CODEBLOCKS
В мире достаточно много программистов, которые готовы поделиться результатами своего труда с коллегами. Часто это просто команда единомышленников, которые начинают создавать продукт для своей команды, а затем пускают его в "свободное плавание", хотят поделиться удачной реализацией алгоритмов или самоутвердиться. Другим часто встречающимся случаем является публикация результатов научной или какой-либо другой академической деятельности.
Свободно распространяемых и закрытых библиотек очень много. Поэтому, в целях экономии времени, более оправданным является использовать уже готовых библиотек функций и классов, нежели создавать все "с нуля".
Обычно библиотеку подключают к какому либо проекту, прописывая пути к файлам библиотеки в настройках проекта. Это довольно-таки простой процесс. Для этого необходимо выполнить несколько действий:
- Получить архив с бинарными файлами библиотеки и распаковать его в какой-нибудь локальный каталог.
- Прописать в настройках IDE пути к каталогам библиотеки: include и lib
Далее можно создать шаблон проекта специально для данной библиотеки, чтобы при создании нового файла с исходными текстами не повторять каждый раз одни и те же действия.
Создайте на пользовательском диске каталог с именем SFML_Lib и распакуйте в него соответствующий архив. В каталоге юудут представлены следующие подкаталоги:
В каталогах lib и include располагаются файлы, необходимые на этапе компиляции программ. Пути к этим каталогам следует прописать в настройках проекта.
В каталоге doc располагается документация к библиотеке на английском языке
В каталоге examples располагаются примеры готовых приложений, написанных с использованием библиотеки SFML.
Подключение библиотеки в Visual Studio
Создайте простой консольный проект Win32. Затем откройте настройки проекта Project – Properties. . Для подключения файлов, необходимых для разработки, установите значения свойств так, как показано на рисунках:
В этом пошаговом руководстве описывается создание статической библиотеки (LIB-файла) для использования с приложениями C++. Статические библиотеки являются хорошим способом повторного использования кода. Вместо того чтобы каждый раз реализовывать одни и те же подпрограммы для обеспечения той или иной функциональности в каждом создаваемом приложении, их можно создать единожды и затем вызывать из приложений. Код, связанный из статической библиотеки, станет частью приложения — . для использования кода не нужно устанавливать другой файл.
В этом пошаговом руководстве рассматриваются следующие задачи:
Предварительные требования
Для работы необходимо владеть основами языка C++.
Создание проекта статической библиотеки
Инструкции по созданию проекта зависят от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
Создание проекта статической библиотеки в Visual Studio
в строке меню выберите файл создать Project , чтобы открыть диалоговое окно создание нового Project .
в верхней части диалогового окна задайте для параметра Language значение C++, задайте для параметра Platform значение Windowsи задайте для параметра Project тип значение Library.
В отфильтрованном списке типов проектов выберите пункт Мастер классических приложений Windows, а затем нажмите кнопку Далее.
В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Статическая библиотека (.lib) .
В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, если он установлен. Установите флажок Пустой проект.
Создание проекта статической библиотеки в Visual Studio 2017
В строке меню выберите Файл Создать Проект.
в диалоговом окне создание Project выберите установленный Visual C++ Windows рабочий стол. На центральной панели выберите Мастер классических приложений Windows.
В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Статическая библиотека (.lib) .
В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, если он установлен. Установите флажок Пустой проект.
Создание проекта статической библиотеки в Visual Studio 2015
В строке меню выберите Файл Создать Проект.
в диалоговом окне создание Project выберите установленные шаблоны Visual C++ Win32. В центральной области выберите Консольное приложение Win32.
В мастере приложений Win32 нажмите кнопку Далее.
На странице Параметры приложения в разделе Тип приложения выберите Статическая библиотека. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок. Чтобы создать проект, нажмите кнопку Готово.
Добавление класса в статическую библиотеку
Добавление класса в статическую библиотеку
Чтобы создать файл заголовка для нового класса, щелкните правой кнопкой мыши, чтобы открыть контекстное меню проекта маслибрари в Обозреватель решений, а затем выберите команду добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите Visual C++ код. В центральной области выберите Заголовочный файл (.h) . Укажите имя файла заголовка — , например —, — а затем нажмите кнопку — . Отобразится почти пустой файл заголовка.
Добавьте объявление класса с именем Arithmetic для выполнения обычных арифметических операций, таких как сложение, вычитание, умножение и деление. Код должен выглядеть примерно так:
Чтобы создать исходный файл для нового класса, откройте контекстное меню проекта маслибрари в Обозреватель решений, а затем выберите добавить новый элемент.
В диалоговом окне Добавление нового элемента в центральной области выберите Файл C++ (.cpp) . Укажите имя исходного файла — , например —, — а затем нажмите кнопку — . Отобразится пустой исходный файл.
Используйте этот исходный файл для реализации функций класса Arithmetic . Код должен выглядеть примерно так:
Чтобы построить статическую библиотеку, выберите Сборкапостроить решение в строке меню. В результате будет создана статическая библиотека MathLibrary.lib, которая может использоваться другими программами.
При выполнении сборки из командной строки Visual Studio программа собирается в два этапа. Сначала выполните команду, cl /c /EHsc MathLibrary.cpp чтобы скомпилировать код и создать объектный файл с именем cl /c /EHsc MathLibrary.cpp . ( cl Команда вызывает компилятор, Cl.exe, а /c параметр указывает Compile без компоновки. Дополнительные сведения см. в разделе /c (компиляция без компоновки). Затем выполните команду, lib MathLibrary.obj чтобы связать код и создать статическую библиотеку lib MathLibrary.obj . (Команда lib вызывает диспетчер библиотек, Lib.exe. Дополнительные сведения см. в разделе LIB Reference.)
Создание консольного приложения C++, ссылающегося на статическую библиотеку
Создание консольного приложения C++, ссылающегося на статическую библиотеку, в Visual Studio
В обозревателе решений щелкните правой кнопкой мыши узел верхнего уровня Решение StaticMath, чтобы открыть контекстное меню. выберите добавить новый Project , чтобы открыть диалоговое окно добавление нового Project .
В верхней части диалогового окна задайте для фильтра Тип проекта значение Консоль.
В отфильтрованном списке типов проектов щелкните Консольное приложение, а затем нажмите кнопку Далее. На следующей странице в поле Имя введите имя проекта MathClient.
После создания консольного приложения будет создана пустая программа. Имя исходного файла будет совпадать с ранее выбранным именем. В этом примере он имеет имя MathClient.cpp .
Создание консольного приложения C++, ссылающегося на статическую библиотеку, в Visual Studio 2017
В обозревателе решений щелкните правой кнопкой мыши узел верхнего уровня Решение StaticMath, чтобы открыть контекстное меню. нажмите кнопку добавить новый Project , чтобы открыть диалоговое окно добавление нового Project .
в диалоговом окне добавление нового Project выберите установленный Visual C++ Windows рабочий стол. На центральной панели выберите Мастер классических приложений Windows.
В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Консольное приложение (EXE) .
В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, если он установлен.
После создания консольного приложения будет создана пустая программа. Имя исходного файла будет совпадать с ранее выбранным именем. В этом примере он имеет имя MathClient.cpp .
Создание консольного приложения C++, ссылающегося на статическую библиотеку, в Visual Studio 2015
В обозревателе решений щелкните правой кнопкой мыши узел верхнего уровня Решение StaticMath, чтобы открыть контекстное меню. нажмите кнопку добавить новый Project , чтобы открыть диалоговое окно добавление нового Project .
в диалоговом окне добавление нового Project выберите установлено Visual C++ Win32. В центральной области выберите Консольное приложение Win32.
В диалоговом окне Мастер приложений Win32 нажмите кнопку Далее.
На странице Параметры приложения выберите в поле Тип приложения пункт Консольное приложение. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, а затем установите флажок Пустой проект. Чтобы создать проект, нажмите кнопку Готово.
Чтобы добавить исходный файл в пустой проект, щелкните правой кнопкой мыши, чтобы открыть контекстное меню проекта масклиент в Обозреватель решений, а затем выберите команду добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите Visual C++ код. В центральной области выберите Файл C++ (.cpp) . Укажите имя исходного файла — , например —, — а затем нажмите кнопку — . Отобразится пустой исходный файл.
Использование функциональности из статической библиотеки в приложении
Использование функциональности из статической библиотеки в приложении
Для использования математических процедур из статической библиотеки необходимо сослаться на эту библиотеку. Откройте контекстное меню проекта масклиент в Обозреватель решений, а затем выберите добавить ссылку.
В диалоговом окне Добавление ссылки перечислены библиотеки, на которые можно создать ссылку. На вкладке Проекты перечислены проекты текущего решения и все библиотеки, на которые они ссылаются. На вкладке Проекты установите флажок MathLibrary, а затем нажмите кнопку ОК.
Выберите страницу свойств Свойства конфигурации C/C++ Общие . В свойстве Дополнительные каталоги включаемых файлов укажите путь к каталогу MathLibrary или найдите этот каталог.
Чтобы найти путь к каталогу, выполните указанные ниже действия.
Откройте раскрывающийся список значений свойства Дополнительные каталоги включаемых файлов, а затем выберите Изменить.
В диалоговом окне Выбор каталога перейдите на уровень вверх и выберите каталог MathLibrary. Затем нажмите кнопку Выбрать папку, чтобы сохранить выбор.
В диалоговом окне Дополнительные каталоги включаемых файлов нажмите кнопку ОК.
Чтобы создать исполняемый файл, выберите Сборкапостроить решение в строке меню.
Запуск приложения
Запуск приложения
Убедитесь в том, что проект MathClient выбран в качестве проекта по умолчанию. Чтобы выбрать его, в обозревателе решений откройте контекстное меню проекта MathClient и выберите команду Назначить запускаемым проектом.
Чтобы запустить проект, в строке меню выберите Отладка Запуск без отладки. Выходные данные должны выглядеть примерно так:
Использование скачанных библиотек с помощью vcpkg
Если вы хотите использовать скачанную библиотеку с помощью диспетчера пакетов vcpkg, то приведенные ниже инструкции можно пропустить. дополнительные сведения см. в разделе vcpkg. io.
Использование статических библиотек
Если проект статической библиотеки был создан в том же решении:
Если статическая библиотека не входит в состав решения:
- Щелкните правой кнопкой мыши узел проекта приложения в обозревателе решений и выберите Свойства.
- На странице свойств Каталоги VC++ добавьте в раздел Пути библиотек путь к каталогу, который содержит LIB-файл. Затем добавьте в раздел Включаемые каталоги путь к файлам заголовков библиотеки.
- На странице входное свойство компоновщика > добавьте имя файла lib в Дополнительные зависимости.
Библиотеки динамической компоновки
Если библиотека DLL была собрана в рамках того же решения, что и приложение, выполните те же действия, что и для статической библиотеки.
Если библиотека DLL не входит в состав решения приложения, вам потребуются DLL-файл, заголовки с прототипами для экспортируемых функций и классов, а также LIB-файл, содержащий необходимую для компоновки информацию.
- Скопируйте DLL-файл в папку выходных данных проекта или другую папку, которая задана в качестве стандартной для поиска библиотек DLL в Windows. Дополнительные сведения см. в статье Порядок поиска библиотек динамической компоновки.
- Выполните шаги с 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 , если сборка, на которую указывает ссылка, имеет строгое имя. Сборка со строгим именем имеет уникальную версию.
Библиотека DLL (библиотека динамической компоновки) — это библиотека, содержащая код и данные, которые могут использоваться несколькими приложениями. Visual Studio можно использовать для создания, сборки, настройки и отладки библиотек DLL.
Создание библиотеки DLL
Создавать библиотеки DLL можно с помощью следующих шаблонов проектов Visual Studio.
Дополнительные сведения см. в разделе Методы отладки MFC.
Отладка библиотеки WCF аналогична отладке библиотеки классов. Дополнительные сведения см. в статье Элементы управления Windows Forms.
Обычно библиотека DLL вызывается из другого проекта. При отладке вызывающего проекта в зависимости от конфигурации библиотеки DLL можно выполнить шаг с заходом и отладить код библиотеки DLL.
Конфигурация отладки библиотеки DLL
При создании приложения на основе шаблона проекта Visual Studio Visual Studio автоматически создает требуемые параметры для конфигурации сборки отладки и выпуска. При необходимости эти параметры можно изменить. Дополнительные сведения см. в следующих статьях:
Установка DebuggableAttribute C++
Чтобы отладчик мог присоединиться к библиотеке DLL C++, код C++ должен добавлять DebuggableAttribute .
Установка DebuggableAttribute
В обозревателе решений выберите проект DLL C++ и щелкните значок Свойства либо щелкните проект правой кнопкой мыши и выберите пункт Свойства.
В области Свойства в разделе Компоновщик > Отладка выберите Да (/ASSEMBLYDEBUG) для свойства Отлаживаемая сборка.
Дополнительные сведения см. в статье /ASSEMBLYDEBUG.
Задание расположений файлов DLL C/C++
Для отладки внешней библиотеки DLL вызывающий проект должен находить библиотеку DLL, ее PDB-файл и любые другие файлы, необходимые библиотеке DLL. Вы можете создать пользовательскую задачу сборки, чтобы скопировать эти файлы в выходную папку \Debug, или скопировать файлы вручную.
Для проектов C/C++ можно задать расположения файлов заголовков и LIBD-файла на страницах свойств проекта, а не копировать их в выходную папку.
Задание расположений файла заголовка C/C и LIB-файла
В обозревателе решений выберите проект DLL C/C++ и щелкните значок Свойства либо щелкните проект правой кнопкой мыши и выберите пункт Свойства.
В верхней части области Свойства в разделе Конфигурация выберите Все конфигурации.
В разделе C/C++ > Общие > Дополнительные включаемые каталоги укажите папку с файлами заголовков.
В разделе Компоновщик > Общие > Дополнительные каталоги библиотек укажите папку с LIB-файлами.
В разделе Компоновщик > Ввод > Дополнительные зависимости укажите полный путь и имя файла для LIB-файлов.
Дополнительные сведения о параметрах проекта C++ см. в статье Справочник C++ по страницам свойств проекта Windows.
Сборка отладочной версии
Перед началом отладки обязательно создайте отладочную версию библиотеки DLL. Для отладки библиотеки DLL вызывающее приложение должно находить PDB-файл и любые другие файлы, необходимые библиотеке DLL.
Вы можете создать пользовательскую задачу сборки, чтобы скопировать эти файлы DLL в выходную папку \Debug, или скопировать файлы вручную.
Обязательно вызовите библиотеку DLL в правильном расположении. Это может показаться очевидным, но, если вызывающее приложение находит и загружает другую копию библиотеки DLL, отладчик никогда не достигнет заданных точек останова.
Отладка библиотека DLL
Библиотеку DLL нельзя запускать напрямую. Ее должно вызывать приложение, обычно это EXE-файл. Дополнительные сведения см. в статье Проекты Visual Studio — C++.
Чтобы отладить библиотеку DLL, можно начать отладку из вызывающего приложения или выполнить отладку из проекта DLL, указав вызывающее приложение. Можно также использовать окно "Интерпретация" отладчика для вычисления функций или методов DLL во время разработки без использования вызывающего приложения.
Дополнительные сведения см. в статье Первое знакомство с отладчиком.
Запуск отладки из вызывающего приложения
Вызывать библиотеку DLL могут следующие виды приложений.
- Приложение из проекта Visual Studio в том же или другом решении из библиотеки DLL.
- Существующее приложение, которое уже развернуто и работает на тестовом или рабочем компьютере.
- Программа расположена в Интернете и доступна по URL–адресу.
- Веб-приложение с веб-страницей, которая внедряет библиотеку DLL.
Выполнить отладку библиотеки DLL из вызывающего приложения можно следующими способами.
Откройте проект для вызывающего приложения и начните отладку, выбрав Отладка > Начать отладку или нажав клавишу F5.
Выполните присоединение к приложению, которое уже развернуто и работает на тестовом или рабочем компьютере. Используйте этот вариант для библиотек DLL на веб-сайтах или в веб-приложениях. Дополнительные сведения см. в разделе Практическое руководство. Присоединение к выполняемому процессу.
Перед запуском отладки этого вызывающего приложения нужно установить точку останова в DLL. См. статью Использование точек останова. При попадании в точку останова DLL можно пошагово проходить по коду, наблюдая действия в каждой строке. Дополнительные сведения см. в статье Навигация по коду с помощью отладчика.
Во время отладки в окне Модули можно проверить библиотеки DLL и EXE-файлы, загружаемые приложением. Чтобы открыть окно Модули, во время отладки выберите Отладка > Окна > Модули. Дополнительные сведения см. в разделе Практическое руководство. использовать окно модулей.
Использование окна "Интерпретация"
Окно Интерпретация можно использовать для вычисления функций или методов DLL во время разработки. Окно Интерпретация выполняет роль вызывающего приложения.
Окно Интерпретация можно использовать во время разработки с большинством типов проектов. Оно не поддерживается для SQL, веб-проектов или скриптов.
Например, чтобы протестировать метод с именем Test в классе Class1 , выполните следующие действия.
Откройте проект DLL, откройте окно Интерпретация, последовательно выбрав пункты Отладка > Окна > Интерпретация или нажав сочетание клавиш CTRL+ALT+I.
Предположим, что Test принимает один параметр int , вычислим Test с помощью окна Интерпретация :
Результат будет выведен в окне Интерпретация.
Можно продолжить отладку Test , установив в нем точку останова, а затем снова вычислив эту функцию.
Будет достигнута точка останова и можно будет пошагово пройти Test . После выполнения Test , отладчик вернется в режим разработки.
Отладка в смешанном режиме
Вы можете написать вызывающее приложение для библиотеки DLL в управляемом или машинном коде. Если собственное приложение вызывает управляемую библиотеку DLL и вы хотите выполнить отладку этих двух объектов, можно включить управляемые и машинные отладчики в свойствах проекта. Точный способ выполнения этой операции зависит от того, откуда будет начата отладка: из проекта DLL или из проекта вызывающего приложения. Дополнительные сведения см. в разделе Практическое руководство. Отладка в смешанном режиме.
Можно выполнить отладку собственной библиотеки DLL из управляемого вызывающего проекта. Дополнительные сведения см. в статье об отладке управляемого и машинного кода.
Команда Visual C++ рада сообщить, что в Visual Studio 2017 было существенно улучшено качество реализации модулей C++ согласно технической спецификации; также мы добавили возможность подключать Стандартную Библиотеку C++ через интерфейсы модулей. Эти интерфейсы, как и поддержка модулей компилятором, являются экспериментальной разработкой и будут развиваться в соответствии с процессом стандартизации.
Начало работы
Поддержка модулей Стандартной Библиотеки реализована в Visual Studio начиная с версии 2017 RTM. Эта функция на данный момент является опциональной и по умолчанию отключена. В будущих версиях модули будут устанавливаться автоматически вместе с заголовками Стандартной Библиотеки. Вам нужно лишь выбрать эту опцию при установке или обновлении поддержки C++.
Проверка правильности установки
Чтобы проверить, настроена ли ваша копия VS 2017 для поддержки модулей, скомпилируйте и запустите приведенную ниже программу (назовите ее, например, test-vs2017-slm.cxx) из командной строки разработчика. Поскольку модули на данный момент являются экспериментальной функцией, их поддержка пока еще очень слабо реализована в среде VS.
При компиляции этого кода с командой
на выходе должен получиться исполняемый файл (test-vs2017-slm.exe), который при запуске распечатает слова «Plato», «Descartes» и «Bacon» — каждое отдельной строкой.
Ключ компилятора для подключения модулей Стандартной Библиотеки
Необходимо добавить ключ /MD при компиляции исходного файла, чтобы подключить модули Стандартной Библиотеки. Ключ /MD инициализирует динамическую библиотеку времени выполнения C (CRT). В режиме отладки следует использовать ключ /MDd.
Если вы забыли указать ключ /MD (или /MDd в режиме отладки), линковщик выдаст ряд предупреждений и ошибку линковки LNK2019, говорящую о наличии неразрешенных внешних символов.
Никаких других ключей для использования модулей Стандартной Библиотеки не требуется. Эти модули могут применяться только для использования с библиотеками импорта DLL Универсальной библиотеки CRT (UCRT).
Подключение модулей Стандартной Библиотеки из среды разработки VS
Если вы хотите использовать среду разработки вместо командной строки, настройте ваш проект для использования экспериментальных модулей согласно следующей инструкции.
1. Откройте окно «Свойства» (Properties) проекта:
2. Перейдите в раздел «Свойства конфигурации» (Configuration Properties) -> C/C++ -> «Генерация кода» (Code Generation) и убедитесь, что у вас выбрана библиотека Multithreaded Debug DLL или Multithreaded DLL (для режимов отладки и релиза соответственно). Эти библиотеки выбраны по умолчанию для новых проектов, так что, если вы ничего не меняли, никаких проблем возникнуть не должно.
3. Зайдите в раздел «Свойства конфигурации» (Configuration Properties) -> C/C++ -> «Язык» (Language) и убедитесь, что включена поддержка стандарта C++17. Если это не так, выберите из выпадающего списка стандарт C++17 или последний проект стандарта C++ (C++ Latest Draft Standard) для конфигураций, которые вы планируете использовать.
4. Впишите команду /experimental:module /module:stdIfcDir "$(VCToolsInstallDir_150)ifc\$(PlatformTarget)" в разделе «Свойства конфигурации» (Configuration Properties) -> C/C++ -> «Командная строка» (Command Line), чтобы включить поддержку модулей для текущего проекта. Обратите внимание, что данный шаг будет упразднен в будущих версиях VS 2017: среда будет сама указывать расположение файлов модулей (задается параметром /module:stdIfcDir) при включении опции поддержки модулей C++.
После этих действий сборка и запуск тестовой программы должны пройти успешно — программа распечатает имена трех философов.
Изменение синтаксиса экспорта модулей
На съезде комитета по стандартизации C++ в ноябре 2016 года было принято решение об изменении синтаксиса экспорта модулей (см. Проблема модулей N1).
Настоящая версия Visual C++ учитывает это изменение, но также позволяет использовать и старый синтаксис, предупреждая о переходе к устаревшему варианту. Комитет по C++ рассматривает возможность присвоения старому синтаксису нового значения, несовместимого с прежним. Мы призываем вас использовать новый синтаксис; поддержка старого синтаксиса будет прекращена в целях соответствия проекту технической спецификации по модулям согласно поправкам комитета ISO C++.
Модули Стандартной Библиотеки (экспериментальная функция)
Ключевым нововведением в версии VS2017 RTM стала поддержка подключения Стандартной Библиотеки C++ посредством модулей. Это экспериментальный инструмент, описанный в предложении по C++ о Модулях Стандартной Библиотеки. В текущей версии модули организованы следующим образом:
- std.regex предоставляет доступ к содержимому заголовка
- std.filesystem предоставляет доступ к содержимому заголовка
- std.memory предоставляет доступ к содержимому заголовка
- std.threading предоставляет доступ к содержимому заголовков , , , , ,
- std.core предоставляет доступ к прочему содержимому Стандартной Библиотеки C++
Если вы хотите использовать модули для включения заголовков не из Стандартной Библиотеки, сгенерировать модули Стандартной Библиотеки можно с помощью ключей /module:name (см. исходную заметку по модулям C++) и /module:export. Если ваш проект зависит от других библиотек и вы хотите попробовать собрать код совсем без заголовков, упаковать заголовки из таких библиотек можно тем же самым способом.
Новые версии VS будут в большей степени соответствовать предложению по модулям Стандартной Библиотеки.
Призыв к действию
В заключение
О прочих проблемах, связанных с использованием среды MSVC в VS 2017, можно сообщить с помощью функции Сообщить о проблеме (Report a Problem) из установщика или из самой среды Visual Studio. Свои предложения оставляйте на сайте UserVoice. Спасибо!
Читайте также: