Урок 1. Подключение библиотеки SFML к среде разработки Visual Studio 2013

В этом уроке мы подключим библиотеку SFML (Simple and fast multimedia library) к среде разработки Microsft Visual Studio 2013:

Microsoft Visual Studio 2013
Microsoft Visual Studio 2013

 

Скачиваем библиотеку http://www.sfml-dev.org/download/sfml/2.2/ (у меня это версия Visual C++ 12 (2013) – 32-bit);

Видеоверсия http://www.youtube.com/watch?v=IghUVIL6okk

Распаковываем куда вам угодно (у меня D:/SFML-2.2/); на всякий случай старайтесь избегать русских букв в папках пути. (то есть C:/приветик/ – лучше не использовать)

Запускаем Visual Studio 2013, файл->создать->проект->пустой проект (имя придумайте сами, у меня это sfmltest) .

Так как мы создали пустой проект – нам негде даже писать код, поэтому нам необходимо добавить файл исходного кода:
Добавляем исходный код – для этого слева в обозревателе решений находим вкладку «Файлы исходного кода»->правый клик->добавить->создать элемент->файл C++ (имя main.cpp)->добавить. ( Имя может быть любым , но опять же лучше всего английские буквы и главный файл называть “main”.)

 

Далее вставляем вот этот тестовый код в файл main.cpp

Не пытайтесь сейчас это запустить – словите ошибки.

Для того, чтобы всё это работало – необходимо подключить библиотеку SFML.

Заходим вверху «проект»->свойства “имя проекта”->свойства конфигурации->C++->общие

В пункте «дополнительные каталоги включаемых файлов прописываем путь до раннее распакованного архива с библиотекой (+ \include.)

У меня получилось так: D:\SFML-2.2\include

Скриншот:

В первой строке прописываем свой путь к sfml до папки include
В первой строке прописываем свой путь к sfml до папки include

Затем идем в компоновщик->общие и в пункте «дополнительные каталоги библиотек» прописываем путь к папке lib (у меня D:\SFML-2.2\lib);

Скрин:

Указываем путь до lib файлов (библиотек)
Указываем путь до lib файлов (библиотек)

 

 

Далее идем в компоновщике во вкладку ввод и в первой строке «дополнительные зависимости» вписываем перед всеми библиотеками следующую строчку:

sfml-graphics-d.lib;sfml-window-d.lib;sfml-system-d.lib;sfml-audio-d.lib;

Скрин:

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

 

Только что подключили основные необходимые для работы библиотеки. Есть еще звук и сеть, но о них поговорим позже.

(Все действия мы делаем для конфигурации Debug. Если вам нужен релиз, или сразу две конфигурации – меняйте значение конфигурации, а затем проделайте все те же действия, что идут после вставки тестового кода)

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

(с SFML_STATIC у меня в Visual Studio 2013 проект не компилируется)

Скрин:

Запустим и словим ошибку. Зато соберется проект и появится папка debug.

Теперь идем в папку бинарников “bin”, которую вы скачали и распаковали с библиотекой (мой вариант D:\SFML-2.2\bin\) и копируем всё содержимое этой папки (dll файлы типа sfml-graphics-2.dll) в папку с вашим проектом  в папку debug (после сборки появилась эта папка),  но не в тот debug, где лежит файл с исходным кодом “main.cpp”, а тот, где появляется exe файл. (мой вариант C:\Users\Павел\Documents\Visual Studio 2013\Projects\sfmltest\debug\)

В эту же папку копируем и вот эти файлы :

msvcp100d.dll;msvcp110.dll;msvcp110d.dll;msvcr100d.dll;msvcr110.dll;msvcr110d.dll;

(они скорее всего есть в bin (в sfml 2.1 раньше были, в 2.2 – нету), и должны работать, но если вдруг нет)

Скачать их можете отсюда: https://yadi.sk/d/Zcy7rUbtdrj2w

(там в архиве еще и файл openal32.dll, он должен быть так же в папке bin изначально. он будет нужен нам потом, для работы со звуком).

Теперь проект можно запустить и если вы всё сделали правильно, то увидите зелёный круг как на скриншоте ниже:

6

Теперь можно приступать к самому интересному:)

На следующем уроке подробно разберем тестовый код, обязательно посмотрите. такое нельзя пропускать :) Ссылка ниже:




Вопросы задавать на форуме. Весь мануал был для дебага, мы пока разрабатываем проект, а не выпускаем.

Но если что, читайте ниже:
Проблемы с релизной сборкой? На форуме https://kychka-pc.ru/Forum/sfml-topic/oshibki-pri-kompilyacii-reliznoj-versii

sfml-товарищи решили проблему.

Буду благодарен, если поделитесь:
SFML вопросы, прошу, задавайте на форуме.
  1. Все делал по гайду, следующая ошибка вылезла:

    Ошибка 1 error LNK1112: тип компьютера модуля “x64″ противоречит типу целевого компьютера “X86″ c:\Users\dstdfx\documents\visual studio 2013\Projects\sfmltest\sfmltest\sfml-graphics-d.lib(sfml-graphics-d-2.dll)

    В чем может быть проблема?

    1. Роман, а какая версия среды разработки? х64 или х32? Библиотеки с официального сайта имеют две версии, попробуй x32 скачать и сделать тоже самое. Достаточно просто везде удалить старые файлы библиотеки и закинуть новые, только что скачанные.

  2. Доброго времени суток.
    Сделал, как у вас написано.
    Выдаёт ошибку при попытке выполнить window.display(shape):
    ‘Необработанное исключение в “0x00000000″ в “Lab7_2.exe”: 0xC0000005: Access violation.’

    Если эту строку закомментировать, то нормально отрисовывает окно.

    1. День добрый. Проблема была бы, скорее всего, в коде, не будь он работоспособным и тестовым. Так что:

      Здесь, вероятнее всего надо смотреть в сторону библиотек.
      Проверьте – есть ли корректный доступ к папке с библиотекой. Такое ощущение, что не может достучаться до объекта “shape”, или до функции draw(), поэтому ругается. Получается, что в библиотеке не была найдена нужная нам ф-ция или объект, отсюда программа возвращает 0 и защищая память “крэшится”.
      В следующих уроках есть пример вывода картинки – попробуйте вывести картинку, будет ли эта ошибка?
      Попробуйте скачать для эксперимента прошлую версию sfml (2.1)
      http://www.sfml-dev.org/download/sfml/2.1/
      и сделать все вновь по инструкции.
      Затем отпишите о результате – что делали и что видели.
      Если не получается, напишите мне на почту kychkaaa@icloud.com , приложив к письму проблему и скачав предварительно прогу TeamViewer

      1. Спасибо за оперативный и обстоятельный ответ!
        Без draw всё нормально работает. В том числе если что-то сделать с окном, например, window.setPosition(sf::Vector2i(10, 50));
        Однако стоит добавить draw, и всё перестаёт работать.
        При этом не важно, что отрисовывается.

        Вывод текста тоже бажит:

        Хорошо, сейчас попробую предыдущую версию библиотеки.
        Возможно, дело в том, что у меня Windows 7 установлен на VirtualBox. Но это всё равно ничего не объясняет. Пробовал и 32-битную версию, и 64-битную.

        1. А если попробовать всю библиотеку полностью запихнуть в корень проекта? Возможно, что на стороннем диске IDE не может достучаться до либы по причине виртуальной машины? может есть тут какой-то глюк. Вобще – очень странно. И ещё что то мне кажется дело тут не в версии библиотеки.
          Я пару раз работал с sfml через parallels с windows 8.1, всё нормально было.
          Пишите о результатах.

    1. Спасибо за ответ о решении проблемы!
      Как-то да, больше чем окно получается вывод графики.

      А если написать

      ,
      то при растягивании окна что происходит?
      Я пока не имею возможности работать с SFML, на выходных займусь уроками.
      p.s. Изображения можно через форму внизу добавлять рядом с формой “отправить комментарий”

  3. Здравствуйте, у меня установлена Visual Studio 2010, я сделал все как сказано в уроке, только библиотеку SFML скачал для 2010 года. И вот такую ошибку компилятор мне подсовывает:
    error C1083: Не удается открыть файл включение: SFML/Graphics.hpp: No such file or directory
    Что мне делать?

    1. Привет. Возможно, что здесь:
      «проект»->свойства “имя проекта”->свойства конфигурации->C++->общие

      В пункте “дополнительные каталоги включаемых файлов” прописан неверный путь. Студия просто не может найти заголовочные файлы библиотеки. Для 2010 студии есть инструкция на официальном сайте и она попроще, чем для 2013.
      http://www.sfml-dev.org/tutorials/2.2/start-vc.php

  4. Выдает ошибку “Ошибка 1 error LNK1112: тип компьютера модуля “x64″ противоречит типу целевого компьютера “X86″ C:\Users\Константин\Documents\Visual Studio 2013\Projects\Mario game\Mario game\sfml-graphics-d.lib(sfml-graphics-d-2.dll)”

    Microsoft Visual  Studio 2013 (x64).

    1. Константин, как минимум первая ошибка, не должно быть русских букв в пути к проекту, актуально для любой среды разработки. Так же необходимо выбирать правильную конфигурацию сборки библиотеки для используемой среды х64 или х86. И вероятно не добавлены dll файлы к проекту.

  5. Добрый день. При настройке SFML обращайте внимание на важный момент. На странице свойств проекта, на то, какая активна платформа х64 или х86 (win32). Авторы это везде упускают, что в английском первоисточнике, что в в русской версии перевода. Если у вас 64-разрядная операционная система и вы скачали соответственно SFML-2.5.0-windows-vc14-64-bit.zip, то и на странице свойств проекта выставите х64, ну и при отладке, сборке, компиляции тоже самое.

Добавить комментарий