
SFML (Simple and Fast Multimedia Library) предоставляет разработчикам набор модулей для работы с графикой, звуком и вводом. Для корректного подключения к Visual Studio 2019 необходимо использовать версии библиотеки, совместимые с компилятором MSVC 2019, например SFML 2.5.1. Установка через NuGet упрощает процесс, но ручная настройка позволяет точнее контролировать параметры сборки и зависимости.
Первым шагом требуется загрузить архив с библиотекой с официального сайта и распаковать его в удобную директорию. Важно проверить архитектуру: если проект 64-битный, необходимо использовать папку x64, для 32-битной сборки – папку x86. В настройках проекта нужно указать пути к заголовочным файлам (Include Directories) и к библиотекам (.lib) (Library Directories), чтобы компилятор мог их корректно обнаружить.
После добавления путей к заголовкам и библиотекам, требуется подключить конкретные модули SFML в разделе Linker → Input → Additional Dependencies. Для консольного проекта обычно достаточно sfml-graphics.lib, sfml-window.lib и sfml-system.lib. Для динамических сборок необходимо копировать соответствующие .dll файлы в каталог с исполняемым файлом проекта.
Рекомендовано включать сборку в режиме Debug с суффиксом -d для библиотек (например, sfml-graphics-d.lib) и убедиться, что версия DLL совпадает с архитектурой проекта. Такая детализация исключает ошибки линковки и позволяет сразу приступить к использованию функций SFML без дополнительных настроек.
Скачивание и выбор версии SFML для Visual Studio 2019

Официальный сайт SFML – sfml-dev.org. Для Visual Studio 2019 требуется версия SFML с поддержкой MSVC 2019 (Visual C++ 16.0). На странице загрузки доступны бинарные сборки для различных компиляторов. Не используйте версии для MinGW или более ранних Visual Studio.
Для стабильной работы рекомендуется выбирать последнюю стабильную версию библиотеки. На момент публикации актуальная стабильная версия – 2.6.0. Доступны сборки: Dynamic (DLL) и Static (Lib). Для начинающих удобнее использовать Dynamic версии.
| Тип сборки | Файл для скачивания | Применение |
|---|---|---|
| Dynamic (DLL) | SFML-2.6.0-windows-vc16-64-bit.zip | Используется с динамическими библиотеками, требует наличие DLL в рабочей директории проекта. |
| Static (Lib) | SFML-2.6.0-windows-vc16-64-bit-s.zip | Компилируется в один исполняемый файл, необходимо подключение SFML_STATIC и всех зависимостей. |
Перед скачиванием убедитесь, что архитектура библиотеки (32-bit или 64-bit) совпадает с настройками проекта Visual Studio 2019. 64-bit рекомендуется для современных систем. После скачивания распакуйте архив в удобное место, например, C:\Libraries\SFML-2.6.0, чтобы дальнейшее подключение к проекту было удобным и прозрачным.
Для быстрого выбора версии ориентируйтесь на три критерия: совместимость с Visual Studio 2019, архитектура (x64 или x86) и тип сборки (Dynamic или Static). Несоблюдение этих параметров приведет к ошибкам компоновки и невозможности запуска проекта.
Создание нового проекта C++ в Visual Studio 2019
Откройте Visual Studio 2019 и выберите «Создать проект». В фильтре укажите язык «C++» и тип проекта «Консольное приложение». Убедитесь, что выбран шаблон «Консольное приложение (C++)».
Задайте имя проекта и путь для хранения файлов. Рекомендуется использовать отдельную папку для каждого проекта и избегать путей с пробелами или кириллицей.
На следующем шаге снимите галочку «Создать каталог для решения», если вы планируете хранить проект в отдельной структуре, либо оставьте галочку для группировки проектов в одном решении.
Выберите платформу «x64» для совместимости с библиотекой SFML 2.5 и выше. Для 32-битных библиотек используйте платформу «x86».
В разделе «Настройки проекта» оставьте включённым «Пустой проект» и снимите опции «Добавить предварительно скомпилированный заголовок», если планируется подключение внешних библиотек вручную.
После создания проекта в обозревателе решений появится структура с папками «Source Files» и «Header Files». Добавьте новый файл с расширением .cpp для основной функции main(), он станет точкой входа для работы с SFML.
Проверьте конфигурацию сборки: «Debug» или «Release». Для отладки рекомендуется сначала использовать «Debug». Убедитесь, что конфигурация совпадает с разрядностью библиотеки SFML.
Проект готов для дальнейшего подключения SFML: добавления путей к заголовочным файлам, библиотекам и динамическим DLL, а также для настройки опций компоновщика.
Настройка путей к заголовочным файлам SFML
Для корректной работы SFML в Visual Studio 2019 необходимо указать компилятору, где искать заголовочные файлы библиотеки.
- Откройте проект в Visual Studio 2019 и перейдите в Свойства проекта (Project → Properties).
- В разделе C/C++ → Общие → Дополнительные каталоги включаемых файлов (Additional Include Directories) добавьте путь к папке
includeSFML. Обычно это выглядит так:C:\SFML-2.5.1\include
- Для удобства можно использовать переменные среды или макросы Visual Studio. Например:
$(SFML_ROOT)\include– если задать переменнуюSFML_ROOTс путем к папке SFML.
- Убедитесь, что путь указывает на корневую папку
include, где находятся подкаталогиSFMLс файлами.hpp. - Сохраните изменения и примените их для выбранной конфигурации (Debug/Release) и платформы (x86/x64).
- Проверьте подключение заголовков в коде:
#include <SFML/Graphics.hpp>#include <SFML/Window.hpp>
Компилятор должен распознавать файлы без ошибок.
Для многоплатформенных проектов рекомендуется использовать одинаковую структуру папок SFML и сохранять пути через макросы Visual Studio, чтобы не менять их при переносе проекта.
Настройка путей к библиотекам SFML

Откройте свойства проекта через «Проект» → «Свойства». Выберите конфигурацию сборки (Debug или Release) и платформу (x86 или x64).
В «C/C++» → «Общие» добавьте путь к SFML/include, например: C:\SFML-2.5.1\include, чтобы компилятор находил заголовочные файлы.
В «Компоновщик» → «Общие» укажите путь к библиотекам SFML: C:\SFML-2.5.1\lib. Для Debug используйте версии с суффиксом -d (sfml-graphics-d.lib, sfml-window-d.lib, sfml-system-d.lib), для Release – без суффикса.
В «Компоновщик» → «Ввод» в «Дополнительные зависимости» перечислите необходимые файлы. Порядок подключения: системные модули, затем графические и аудио-модули. Пример для Release: sfml-system.lib, sfml-window.lib, sfml-graphics.lib. Для Debug используйте -d версии.
Скопируйте файлы *.dll из SFML/bin в каталог с исполняемым файлом проекта или добавьте путь к SFML/bin в системную переменную PATH.
Проверьте корректность путей созданием окна через sf::RenderWindow. Ошибки линковки укажут на пропущенные библиотеки или несоответствие архитектуры.
Подключение нужных.lib файлов к проекту

Откройте свойства проекта через меню Project → Properties. В разделе Configuration выберите «All Configurations» для одновременной настройки Debug и Release.
Перейдите в Configuration Properties → Linker → Input. В поле «Additional Dependencies» добавьте имена необходимых библиотек SFML. Для динамической сборки используйте sfml-graphics-d.lib, sfml-window-d.lib, sfml-system-d.lib для Debug и sfml-graphics.lib, sfml-window.lib, sfml-system.lib для Release.
Если используется модуль Audio, добавьте sfml-audio-d.lib и sfml-audio.lib соответственно для Debug и Release. Для сетевых возможностей подключите sfml-network-d.lib и sfml-network.lib.
После добавления библиотек убедитесь, что путь к ним указан в Configuration Properties → Linker → General → Additional Library Directories. Укажите полный путь к папке lib вашей установки SFML.
Для статической сборки добавьте флаг SFML_STATIC в Preprocessor Definitions и подключите версии библиотек с суффиксом -s: sfml-graphics-s-d.lib для Debug и sfml-graphics-s.lib для Release. Аналогично для остальных модулей.
Сохраните настройки и выполните очистку проекта (Build → Clean Solution), затем сборку (Build → Build Solution), чтобы убедиться в корректности подключения всех .lib файлов.
Настройка параметров компоновщика для работы с SFML

Откройте свойства проекта в Visual Studio 2019 и перейдите в раздел Linker → Input. В поле Additional Dependencies добавьте конкретные библиотеки SFML, соответствующие вашему конфигурационному режиму: для Debug используйте `sfml-graphics-d.lib`, `sfml-window-d.lib`, `sfml-system-d.lib`; для Release – `sfml-graphics.lib`, `sfml-window.lib`, `sfml-system.lib`. Каждую библиотеку указывайте через пробел или на новой строке.
В разделе Linker → General → Additional Library Directories пропишите путь к папке, где находятся файлы `.lib`. Для удобства используйте абсолютный путь вида `C:\SFML\lib` или относительный к каталогу проекта.
Для корректной работы с динамическими библиотеками SFML убедитесь, что в Properties → Debugging → Environment добавлен путь к папке с DLL: `PATH=%PATH%;C:\SFML\bin`. Это исключает ошибки загрузки при запуске приложения из Visual Studio.
Если проект использует статическую линковку, в C/C++ → Preprocessor → Preprocessor Definitions добавьте макрос `SFML_STATIC`. В этом случае подключаются версии библиотек без суффикса `-d` для Debug и без него для Release, и необходимость в DLL отпадает.
Проверьте, что выбран правильный тип конфигурации компоновщика: Properties → Linker → System → Subsystem должен соответствовать типу вашего приложения (`Console` для консольных проектов, `Windows` для оконных). Несоответствие приводит к ошибкам LNK.
После внесения изменений выполните полную пересборку проекта через Build → Rebuild Solution, чтобы гарантировать, что компоновщик использует обновленные параметры и библиотеки SFML.
Копирование динамических библиотек (.dll) в папку проекта
Для корректной работы SFML в Visual Studio 2019 необходимо разместить все требуемые динамические библиотеки (.dll) в директории с исполняемым файлом проекта. Без этого приложение не запустится, даже если сборка прошла успешно.
Рекомендованная последовательность действий:
- Откройте папку
SFML/binв каталоге установки SFML. Здесь находятся все необходимые .dll-файлы. - Выберите библиотеки в соответствии с используемыми модулями SFML. Например, для графики и окна нужны:
sfml-graphics-2.dll,sfml-window-2.dll,sfml-system-2.dll. Если используется аудио, добавьтеsfml-audio-2.dll. - Скопируйте выбранные .dll в папку с вашим исполняемым файлом проекта. Обычно это
ProjectFolder/DebugилиProjectFolder/Release, в зависимости от конфигурации сборки. - При использовании статической линковки динамические библиотеки не нужны, однако при динамической линковке игнорировать этот шаг нельзя.
- Для удобства тестирования создайте скрипт копирования или добавьте post-build событие в Visual Studio:
copy "$(SFML_DIR)\bin\*.dll" "$(OutDir)"
Это автоматически переместит все актуальные .dll после сборки.
После копирования убедитесь, что исполняемый файл запускается без ошибок о недостающих библиотеках. Если возникает сообщение типа sfml-graphics-2.dll not found, проверьте правильность пути и соответствие конфигурации сборки (Debug/Release) и версии библиотек.
При переносе проекта на другой компьютер всегда копируйте .dll вместе с исполняемым файлом или настройте переменную окружения PATH, указывающую на папку с библиотеками.
Проверка подключения SFML с простым примером окна
Создайте новый проект C++ в Visual Studio 2019 с консольным приложением. Убедитесь, что в настройках проекта указаны пути к заголовочным файлам SFML (`C/C++ → Дополнительные каталоги включаемых файлов`) и к библиотекам (`Компоновщик → Дополнительные каталоги библиотек`).
Добавьте к проекту ссылку на динамические библиотеки SFML (`Компоновщик → Ввод → Дополнительные зависимости`), например: `sfml-graphics-d.lib`, `sfml-window-d.lib`, `sfml-system-d.lib` для Debug-конфигурации и без `-d` для Release.
Создайте новый исходный файл, например `main.cpp`, и вставьте следующий минимальный код для создания окна:
«`cpp
#include
int main() {
sf::RenderWindow window(sf::VideoMode(800, 600), «SFML Test Window»);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear(sf::Color::Blue);
window.display();
}
return 0;
}CopyEdit
Компилируйте проект. При успешной сборке и запуске должно появиться окно размером 800×600 с синим фоном. Если возникают ошибки линковки, проверьте соответствие Debug/Release версий библиотек и корректность путей.
Для динамических библиотек убедитесь, что файлы `sfml-graphics-*.dll`, `sfml-window-*.dll`, `sfml-system-*.dll` находятся рядом с исполняемым файлом или в системном PATH.
Вопрос-ответ:
Какие версии SFML совместимы с Visual Studio 2019?
Для Visual Studio 2019 подходят версии SFML, собранные под компилятор MSVC 2019 (обычно это версии с пометкой 15.x). Нужно убедиться, что скачиваемые бинарные файлы соответствуют архитектуре вашей системы — x86 для 32-битной и x64 для 64-битной.
Как правильно подключить заголовочные файлы SFML к проекту в Visual Studio?
Заголовочные файлы подключаются через настройки проекта: откройте свойства проекта, перейдите в раздел C/C++ → Общие → Дополнительные каталоги включаемых файлов и добавьте путь к папке include библиотеки SFML. После этого компилятор сможет найти все необходимые .hpp файлы при сборке проекта.
Почему при сборке проекта появляются ошибки линковки на функции SFML?
Ошибки линковки возникают, если не указаны библиотеки SFML, которые нужно подключать. В свойствах проекта нужно открыть раздел Компоновщик → Общие → Дополнительные каталоги библиотек и добавить путь к папке lib SFML. Затем в Компоновщик → Ввод → Дополнительные зависимости перечислить конкретные .lib файлы, соответствующие используемым модулям (например, sfml-graphics.lib, sfml-window.lib, sfml-system.lib). Также важно выбрать правильную версию — отладочную или релизную, чтобы соответствовать конфигурации сборки.
Нужно ли копировать DLL файлы SFML в папку с исполняемым файлом, и если да, какие именно?
Да, для корректного запуска программы DLL файлы должны находиться рядом с исполняемым файлом. Обычно требуется скопировать все DLL из папки bin SFML, которые соответствуют использованным модулям (например, sfml-graphics-2.dll, sfml-window-2.dll, sfml-system-2.dll). Если этого не сделать, программа будет выдавать ошибки запуска из-за отсутствующих динамических библиотек.
