Skip to content

Установка SFML на Visual Studio

В этом руководстве вы узнаете, как установить SFML (Simple and Fast Multimedia Library) на Visual Studio 2022.

Скачивание библиотеки

  1. Перейдите на официальный сайт SFML в раздел скачивания.
  2. Выберите последнюю стабильную версию SFML, например, SFML 2.6.1.
  3. Выберите нужную версию для Visual C++, например, Visual C++ 17 (2022) - 32-bit.
  4. Скачайте архив и распакуйте его в удобное место. Рекомендуется создать папку dependencies в корневой папке вашего проекта и разделить её на подкаталоги для 32 и 64-битных версий.

Подключаем SFML к проекту

Откроем свойства вашего проекта

и выберем конфигурацию (Release/Debug, 32/64-bit).

Подключим путь к include

Перейдём в "C/C++", "Общие", и в "Дополнительные каталоги включаемых файлов" укажите путь к папке include, например, $(ProjectDir)dependencies\64\SFML-2.6.1\include.

Прописали дополнительные каталоги включаемых файлов

Подключаем путь к lib файлам

В свойствах проекта выбираем "C/C++", "Компоновщик", "Общие", в "Дополнительные каталоги библиотек" пишем путь к папке lib, например, $(ProjectDir)dependencies\64\SFML-2.6.1\lib

Прописали дополнительные каталоги библиотек

Линкуем сами библиотеки

Здесь у нас есть два пути:

  1. Подключать библиотеку динамически (с dll файлами которые нужно будет хранить с exe файлом нашей программы)
  2. Подключать библиотеку статически (с чистой директорией с exe файлом)

Подключаем динамически

В свойствах проекта выбираем "Компоновщик", "Ввод" в "Дополнительные зависимости" вводим названия нужных нам либ. В SFML название либ release состоит из sfml-модуль.lib, в свою очередь как debug из sfml-модуль-d.lib.

Т.е список библиотек будет

Release

sfml-window.lib; sfml-system.lib; sfml-graphcs.lib; sfml-audio.lib; sfml-network.lib;

А также закидываем все dll файлы без постфикса -d в папку проекта (не забудьте таскать их вместе с вашим скомпилированным exe файлом)

Debug

sfml-window-d.lib; sfml-system.lib-d; sfml-graphcs.lib-d; sfml-audio.lib-d; sfml-network.lib-d;

А также закидываем все dll файлы с постфиксом -d в папку проекта (не забудьте таскать их вместе с вашим скомпилированным exe файлом)

Подключаем статически

В свойства проекта, выбираем "C/C++", "Препроцессор" и дописываем туда SFML_STATIC; в начало. Переходим обратно в "Компоновщик", "Ввод" и в "Дополнительные зависимости" вписываем либы и доп. зависимости к ним.

Вот таблица с названием либ и зависимостями:

Название модуляДоп. зависимости
sfml-graphics-s.libsfml-window-s.lib; sfml-system-s.lib; opengl32.lib; freetype.lib;
sfml-window-s.libsfml-system-s.lib; opengl32.lib; winmm.lib; gdi32.lib;
sfml-audio-s.libsfml-system-s.lib; openal32.lib; flac.lib; vorbisenc.lib; vorbisfile.lib; vorbis.lib; ogg.lib;
sfml-network-s.libsfml-system-s.lib; ws2_32.lib;
sfml-network-s.libwinmm.lib;
Пример указания зависимостей

Точка входа

В "Компоновщик", "Дополнительно" точку входа меняем на mainCRTStartup.

Ввели в точку входа mainCRTStartup

Проверка

Код для проверки

cpp
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

Результат

Если вы всё сделали правильно, то, скомпилировав проект, вы получите: Скриншот успешной компиляции

Содержание доступно по лицензии MIT