Как установить sfml на visual studio 2019
БлогNot. Устанавливаем SFML в Visual Studio 2019 и компилируем простую игру
Устанавливаем SFML в Visual Studio 2019 и компилируем простую игру
Сейчас есть рекомендуемый путь установки библиотек, подобных SFML, состоящий в том, что в Studio имеется менеджер пакетов NuGet и теоретически всё должно быть просто:
Создаём консольное приложение, в «Обозревателе решений» жмём на выделенным жирным имени проекта правой кнопкой мыши, выбираем команду «Управление пакетами NuGet», во вкладке «Обзор» поиском находим sfml_graphics и устанавливаем последнюю версию (2.5.1 в данный момент).
Увы, и на диске (у меня в c:\Users\Admin\.nuget ), и в папке проекта создалась куча файлов, но без настройки свойств проекта они всё равно обойтись не помогли, по крайней мере, у меня не вышло.
Поэтому установим SFML «по старинке» и скомпилируем в ней небольшую игру вот по таким мотивам, была у меня в детстве эта штучка, прелесть (и сейчас, вроде, где-то есть, только крышечка от батарейного отсека пропала 🙂
Сначала действительно создадим пустой проект C++ и добавим туда файл Source.cpp как по этой ссылке.
Затем скачаем библиотеку SFML вот отсюда, я взял 64-битную для Visual C++ 15 (2017), новее не вижу. Распаковать архив там, где удобно, у меня путь d:\Nick\sfml , но можно и в папку проекта, только не забывайте пути с пробелами брать в двойные кавычки и не надо кириллицы в именах папок пути.
Жмём правой кнопкой на значке Компьютер, выбираем Свойства, добавляем следующий путь в переменную path (порядок выбора инструментов для Windows 10 здесь и далее показан цифрами на рисунках):
Добавление пути к библиотекам SFML в path
P.S. Правда, в итоге всё равно путь не помог, возможно, стоило сначала перезагрузить компьютер, но я этого давно уже не делал 🙂
Обращаемся к верхнему меню Проект — Свойства: [Имя_проекта] и дальнейшие настройки выполняем там.

Прописать каталог для поиска включаемых файлов SFML
Обратите внимание, что я поставил правильную платформу x64 и конфигурацию Release, в которой собираюсь линковать проект (1, 2).

Прописываем дополнительный каталог библиотек для компоновщика

Прописываем дополнительные зависимости для компоновщика
Здесь я прописал имена библиотек именно для конфигурации Release, если хотите для Debug, то имена будут sfml-graphics-d.lib , sfml-window-d.lib и sfml-system-d.lib .

Прописываем определение для препроцессора
Для статической сборки теоретически следует прописать SFML_STATIC вместо SFML_DYNAMIC , но у меня с этим так и не вышло — всё равно error LNK2001: неразрешенный внешний символ «public: static class sf::RenderStates const sf::RenderStates::Default» и ещё два для определений цветов.
Помещаем в файл Source.cpp код игры 🙂
Теперь проект должен работать при запуске из среды, а для «отдельного» запуска исполняемого файла нам всё равно придётся скопировать в папку с exe’шкой файлы background.png , egg.png , wolf.png и cyrilicold.ttf из папки проекта и, возможно, если новое значение в path ещё не работает, sfml-graphics-2.lib , sfml-window-2.lib и sfml-system-2.lib из папки d:\Nick\sfml\bin (или вашей папки вместо d:\Nick ).
Вот что у нас вышло, волк собирает яйца, управление — клавишами со стрелками.

Игра в работе
Этот проект настроен на мои пути в файлам, так что если у вас они свои, придётся повторить описанные в статье шаги по настройке (за эти настройки, увы, отвечает не файл проекта, а файл .suo из вложенной папки .vs , обычно файл и папка имеют атрибут «Скрытый»).
В исходнике (а он состоит из единственного файла Source.cpp около 170 строк) много повторяющихся фрагментов, его нетрудно оптимизировать, думаю, сумев запустить приложение, вы справитесь с этим. Все действия прокомментированы.
12.12.2021, 23:51 [1484 просмотра]
SFML and Visual Studio
This tutorial is the first one you should read if you’re using SFML with the Visual Studio IDE (Visual C++ compiler). It will explain how to configure your SFML projects.
Installing SFML
First, you must download the SFML SDK from the download page.
You must download the package that matches your version of Visual C++. Indeed, a library compiled with VC++ 10 (Visual Studio 2010) won’t be compatible with VC++ 12 (Visual Studio 2013) for example. If there’s no SFML package compiled for your version of Visual C++, you will have to build SFML yourself.
You can then unpack the SFML archive wherever you like. Copying headers and libraries to your installation of Visual Studio is not recommended, it’s better to keep libraries in their own separate location, especially if you intend to use several versions of the same library, or several compilers.
Creating and configuring a SFML project
The first thing to do is choose what kind of project to create. It is recommended to select «Empty Project». The dialog window offers a few other options to customize the project: select «Console application» or «Windows application» only if you know how to use pre-compiled headers.
For the purpose of this tutorial, you should create a main.cpp file and add it to the project, so that we have access to the C++ settings (otherwise Visual Studio doesn’t know which language you’re going to use for this project). We’ll explain what to put inside later.
Now we need to tell the compiler where to find the SFML headers (.hpp files), and the linker where to find the SFML libraries (.lib files).
In the project’s properties, add:
- The path to the SFML headers (/include) to C/C++ » General » Additional Include Directories
- The path to the SFML libraries (/lib) to Linker » General » Additional Library Directories
These paths are the same in both Debug and Release configuration, so you can set them globally for your project («All configurations»).

The next step is to link your application to the SFML libraries (.lib files) that your code will need. SFML is made of 5 modules (system, window, graphics, network and audio), and there’s one library for each of them.
Libraries must be added in the project’s properties, in Linker » Input » Additional Dependencies. Add all the SFML libraries that you need, for example «sfml-graphics.lib», «sfml-window.lib» and «sfml-system.lib».

It is important to link to the libraries that match the configuration: «sfml-xxx-d.lib» for Debug, and «sfml-xxx.lib» for Release. A bad mix may result in crashes.
The settings shown here will result in your application being linked to the dynamic version of SFML, the one that needs the DLL files. If you want to get rid of these DLLs and have SFML directly integrated into your executable, you must link to the static version. Static SFML libraries have the «-s» suffix: «sfml-xxx-s-d.lib» for Debug, and «sfml-xxx-s.lib» for Release.
In this case, you’ll also need to define the SFML_STATIC macro in the preprocessor options of your project.

Starting from SFML 2.2, when static linking, you will have to link all of SFML’s dependencies to your project as well. This means that if you are linking sfml-window-s.lib or sfml-window-s-d.lib for example, you will also have to link opengl32.lib, winmm.lib and gdi32.lib. Some of these dependency libraries might already be listed under «Inherited values», but adding them again yourself shouldn’t cause any problems.
Here are the dependencies of each module, append the -d as described above if you want to link the SFML debug libraries:
You might have noticed from the table that SFML modules can also depend on one another, e.g. sfml-graphics-s.lib depends both on sfml-window-s.lib and sfml-system-s.lib. If you static link to an SFML library, make sure to link to the dependencies of the library in question, as well as the dependencies of the dependencies and so on. If anything along the dependency chain is missing, you will get linker errors.
If you are slightly confused, don’t worry, it is perfectly normal for beginners to be overwhelmed by all this information regarding static linking. If something doesn’t work for you the first time around, you can simply keep trying always bearing in mind what has been said above. If you still can’t get static linking to work, you can check the FAQ and the forum for threads about static linking.
If you don’t know the differences between dynamic (also called shared) and static libraries, and don’t know which one to use, you can search for more information on the internet. There are many good articles/blogs/posts about them.
Your project is ready, let’s write some code now to make sure that it works. Put the following code inside the main.cpp file:
#include 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; >
If you chose to create a «Windows application» project, the entry point of your code has to be set to «WinMain» instead of «main». Since it’s Windows specific, and your code would therefore not compile on Linux or macOS, SFML provides a way to keep a standard «main» entry point in this case: link your project to the sfml-main module («sfml-main-d.lib» in Debug, «sfml-main.lib» in Release), the same way you linked sfml-graphics, sfml-window and sfml-system.
Now compile the project, and if you linked to the dynamic version of SFML, don’t forget to copy the SFML DLLs (they are in ) to the directory where your compiled executable is. Run it, and if everything works you should see this:

If you are using the sfml-audio module (regardless whether statically or dynamically), you must also copy the DLL of the external library needed by it, which is OpenAL32.dll.
These files can be found in too.
Подключение библиотеки SFML к Visual Studio
В этом уроке я хотел бы показать, как подключить библиотеку SFML к среде разработки Visual Studio.
SFML содержит ряд модулей для простого программирования игр и мультимедиа приложений.
Перед тем как начать. Нужно пройти по ссылке: http://www.sfml-dev.org/download/sfml/2.3.2/ (это официальный сайт) и скачать библиотеку. Выбирайте версию для своей VS.

Распаковываем куда вам угодно, на всякий случай старайтесь избегать русских букв в папках пути.
Запускаем Visual Studio, файл->создать->проект->пустой проект. (Имя проекта, решений и путь выбирайте сами).

Добавляем исходный код – для этого слева в обозревателе решений находим вкладку «Файлы исходного кода»->правый клик->добавить->создать элемент->файл C++ (имя main.cpp)->добавить.
Далее вставляем вот этот тестовый код в файл main.cpp
#include int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFMLworks"); 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; }
После попытки запуска мы сталкиваемся с подобной проблемой:

Для того, чтобы всё это работало – необходимо подключить библиотеку SFML.
Для начала, все действия мы делаем для конфигурации Debug.
Заходим вверху «проект»->свойства “имя проекта”->свойства конфигурации->C++->общие
В пункте «дополнительные каталоги включаемых файлов прописываем путь до раннее распакованного архива с библиотекой (+ \include.)
Например: C:\Program Files\SFML-2.3.2\include

Затем идем в компоновщик->общие и в пункте «дополнительные каталоги библиотек» прописываем путь к папке lib;

Далее идем в компоновщике во вкладку ввод и в первой строке «дополнительные зависимости» вписываем перед всеми библиотеками следующую строчку:
sfml-graphics-d.lib;sfml-window-d.lib;sfml-system-d.lib;sfml-audio-d.lib;

Только что подключили основные необходимые для работы библиотеки.
Последний штрих – идем во вкладку C++->препроцессор и в первой строке «определение препроцессора» в самом начале дописываем: SFML_DYNAMIC;

Напоминаю, все действия мы делали для конфигурации Debug. Все тоже самое нужно проделать для конфигурации Release.
Заходим вверху «проект»->свойства “имя проекта”->свойства конфигурации. В левом верхнем углу находим Конфигурация, нажимаем на слайдер и выбираем Release.
И повторяем несколько предыдущих пунктов.





Запустим и словим ошибку. Зато соберется проект и появится папка debug.
Теперь идем в папку бинарников “bin”, которую вы скачали и распаковали с библиотекой (мой вариант D:\SFML-2.2\bin\) и копируем всё содержимое этой папки (dll файлы типа sfml-graphics-2.dll) в папку с вашим проектом в папку debug (после сборки появилась эта папка), но не в тот debug, где лежит файл с исходным кодом “main.cpp”, а тот, где появляется exe файл.
В эту же папку копируем и вот эти файлы :
Все эти файлы можно скачать в zip архиве, который я прикрепил снизу.
Теперь проект можно запустить и если вы всё сделали правильно, то увидите зелёный круг как на скриншоте ниже:

Если возникла вот такая проблема:

Советую воспользоваться программой: Dll-Files Fixer.
| Прикрепленный файл | Размер |
|---|---|
| msvcp.zip | 550.93 кб |
| msvcr.zip | 1.61 Мб |
Как настроить библиотеку SFML в Visual Studio
Как настроить ваши проекты SFML, если вы используете интегрированную среду разработки программного обеспечения Visual Studio.
В этой статье объясняется, как настроить ваши проекты SFML, если Вы используете интегрированную среду разработки программного обеспечения Visual Studio (компилятор Visual Studio С++).
Установка SFML
Скачайте SFML SDK со страницы загрузки . Выбираем самую последнюю версию софта, на сегодня это версия SFML 2.5.1. Есть варианты выбора для 32-х разрядных систем и 64-х разрядных (рис. № 1). Я скачиваю 64-х разрядную библиотеку.
Создание и настройка проекта SFML
Создаём пустой проект в Visual Studio (рис. № 2):
Меню -> проект -> свойства проекта -> С/С++ ->общие ->Дополнительные каталоги включаемых файлов.
Обращаем внимание на платформу решения, она должна совпадать с разрядностью скачанной библиотеки SFML. В нашем случае мы настраиваем 64-х разрядную библиотеку (рис. № 6). Если Вы настраиваете 32-х разрядную систему тогда указывайте x86.
В обозреватели решений выбираем наш проект (рис. № 3).
Выбираем меню проект и меню свойства (рис. № 7):
С/С++ ->общие ->Дополнительные каталоги включаемых файлов (включаем каталог include).
Указываем компоновщику, где найти библиотеки SFML (файлы .lib рис.№№ 12-14).
Компоновщик -> общие -> дополнительные каталоги библиотек(включаем каталог lib):
sfml-graphics-d.lib sfml-window-d.lib sfml-audio-d.lib sfml-system-d.lib
Компоновщик -> ввод -> дополнительные зависимости:
Устанавливаем отображения графического окна без консоли (рис. № 17).
Компоновщик -> система -> подсистема (subsystem:windows):
Создаём точку входа: mainCRTStartup (рис. № 18).
Компоновщик -> дополнительно -> точка входа:
Копируем все файлы из папки bin библиотеки SFML и вставляем в наш проект (рис. № 19).
Какой язык программирования изучать: советы для новичков
Шаблон кода библиотеки SFML
#include using namespace sf; int main() < RenderWindow window(VideoMode(400, 400), L"Новый проект", Style::Default); window.setVerticalSyncEnabled(true); CircleShape shape(100.f,3); shape.setPosition(100, 100); shape.setFillColor(Color::Magenta); while (window.isOpen()) < Event event; while (window.pollEvent(event)) < if (event.type == Event::Closed) window.close(); >window.clear(Color::Blue); window.draw(shape); window.display(); > return 0; >
Выполним код программы (рис. № 21)
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
Если что-то у Вас не вышло, то более подробную инструкцию подключения библиотеки SFML к Visual Studio 2022, а также создание шаблона библиотеки SFML в Visual Studio, вы можете узнать посмотрев видео «Подключение библиотеки SFML C++».
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
