Установка SFML на Visual Studio
В этом руководстве вы узнаете, как установить SFML (Simple and Fast Multimedia Library) на Visual Studio 2022.
Скачивание библиотеки
- Перейдите на официальный сайт SFML в раздел скачивания.
- Выберите последнюю стабильную версию SFML, например, SFML 2.6.1.
- Выберите нужную версию для Visual C++, например, Visual C++ 17 (2022) - 32-bit.
- Скачайте архив и распакуйте его в удобное место. Рекомендуется создать папку
dependencies
в корневой папке вашего проекта и разделить её на подкаталоги для 32 и 64-битных версий.
Подключаем SFML к проекту
Откроем свойства вашего проекта
и выберем конфигурацию (Release/Debug, 32/64-bit).
Подключим путь к include
Перейдём в "C/C++", "Общие", и в "Дополнительные каталоги включаемых файлов" укажите путь к папке include
, например, $(ProjectDir)dependencies\64\SFML-2.6.1\include
.
![Прописали дополнительные каталоги включаемых файлов](/assets/include.6s0sWcXA.png)
Подключаем путь к lib файлам
В свойствах проекта выбираем "C/C++", "Компоновщик", "Общие", в "Дополнительные каталоги библиотек" пишем путь к папке lib
, например, $(ProjectDir)dependencies\64\SFML-2.6.1\lib
![Прописали дополнительные каталоги библиотек](/assets/additional-libs-path.JUl_Ht7o.png)
Линкуем сами библиотеки
Здесь у нас есть два пути:
- Подключать библиотеку динамически (с
dll
файлами которые нужно будет хранить сexe
файлом нашей программы) - Подключать библиотеку статически (с чистой директорией с
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.lib | sfml-window-s.lib; sfml-system-s.lib; opengl32.lib; freetype.lib; |
sfml-window-s.lib | sfml-system-s.lib; opengl32.lib; winmm.lib; gdi32.lib; |
sfml-audio-s.lib | sfml-system-s.lib; openal32.lib; flac.lib; vorbisenc.lib; vorbisfile.lib; vorbis.lib; ogg.lib; |
sfml-network-s.lib | sfml-system-s.lib; ws2_32.lib; |
sfml-network-s.lib | winmm.lib; |
![Пример указания зависимостей](/assets/input.J4WNSTj7.png)
Точка входа
В "Компоновщик", "Дополнительно" точку входа меняем на mainCRTStartup
.
![Ввели в точку входа mainCRTStartup](/assets/mainCRTStartup.i3-SpE-o.png)
Проверка
Код для проверки
#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;
}
Результат
Если вы всё сделали правильно, то, скомпилировав проект, вы получите: