Прикручиваем библиотеку SFML к DEV C++

программирование на современных языках программирования: Java, C, C++, C#


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Прикручиваем библиотеку SFML к DEV C++

Сообщение UncleFather »

Задача:

Необходимо подключить библиотеку SFML (Simple and Fast Multimedia Library - простая и быстрая мультимедийная библиотека) к среде разработки (IDE) DEV C++

DEV C++ установлена на 64-х разрядной ОС MS Windows 8.1 Professional rus, другими словами, есть необходимость в подключении как 32-х разрядной, так и 64-х разрядной библиотеки SFML.


Решение:

  1. Определяем версию установленного компилятора C++. Это важно, так как разные версии компиляторов GCC не совместимы между собой:

    There are multiple variants of GCC for Windows, which are incompatible with each other (different exception management, threading model, etc.). Make sure you select the package which corresponds to the version that you use. If you are unsure, check which of the libgcc_s_sjlj-1.dll or libgcc_s_dw2-1.dll files is present in your MinGW/bin folder. If MinGW was installed along with Code::Blocks, you probably have an SJLJ version.
    If you feel like your version of GCC can't work with the precompiled SFML libraries, don't hesitate to build SFML yourself, it's not complicated.

    Как сказано в вышеприведенной цитате, определять версию компилятора следует ориентируясь на наличие файлов libgcc_s_sjlj-1.dll или libgcc_s_dw2-1.dll в папке MinGW/bin. Если эти файлы присутствуют, то, скорее всего, установлена SJLJ версия.

    Примечание: Ориентироваться на версию компилятора, отображаемую в IDE DEV C++ не нужно:

    01.jpg

    Так же пусть вас не сбивает с толку название папки компилятора MinGW64 - для определения версии необходимой SFML эти данные не имеют значения.

    Проще говоря, если у вас скачана последняя, доступная на 28 марта 2017 года версия DEV C++, то к ней нужна библиотека SFML версии GCC 4.8.1 TDM (SJLJ).

    Далее я буду приводить решение, ориентированное именно на эти версии IDE и библиотеки SFML.

  2. Итак, скачиваем 32-х разрядную и 64-разрядную версии библиотеки SFML GCC 4.8.1 TDM (SJLJ).
    Зеркало здесь:

    SFML-2.2-windows-gcc-4.8.1-tdm-32-bit.zip
    (9.16 МБ) 1493 скачивания
    SFML-2.2-windows-gcc-4.8.1-tdm-64-bit.zip
    (10.52 МБ) 1965 скачиваний
  3. Распаковываем оба архива в отдельные папки на жестком диске (лучше, чтобы путь не содержал кириллических символов). Например , 32-х разрядную версию распакуем в папку D:\Soft\Dev-Cpp\SFML-2.2-32, а 64-х разрядную - в папку D:\Soft\Dev-Cpp\SFML-2.2-64.

  4. Чтобы проверить то, что мы выбрали правильную версию библиотеки SFML, соответствующую компилятору GCC, нужно запустить какой-либо исполняемый файл из папки examples для любой разрядности.

    Для примера рассмотрим 32-х разрядную версию и папку примера Pong:

    1. Из папки Dev-Cpp\MinGW64\bin в папку Dev-Cpp\SFML-2.2-32\examples\pong копируем два файла:

      • libgcc_s_sjlj-1.dll

      • libstdc++-6.dll

    2. Из папки Dev-Cpp\SFML-2.2-32\bin в папку Dev-Cpp\SFML-2.2-32\examples\pong копируем шесть файлов:

      • libsndfile-1.dll

      • openal32.dll

      • sfml-audio-2.dll

      • sfml-graphics-2.dll

      • sfml-system-2.dll

      • sfml-window-2.dll

    3. Запускаем Pong.exe - игра должна запуститься без ошибок.

    Для 64-х разрядной версии, аналогично:

    1. Из папки Dev-Cpp\MinGW64\bin в папку Dev-Cpp\SFML-2.2-64\examples\pong копируем два файла:

      • libgcc_s_seh_64-1.dll

      • libstdc++_64-6.dll

    2. Из папки Dev-Cpp\SFML-2.2-64\bin в папку Dev-Cpp\SFML-2.2-64\examples\pong копируем шесть файлов:

      • libsndfile-1.dll

      • openal32.dll

      • sfml-audio-2.dll

      • sfml-graphics-2.dll

      • sfml-system-2.dll

      • sfml-window-2.dll

    3. Запускаем Pong.exe - игра должна запуститься без ошибок.

    Из этих библиотек можно сформировать два архива - для 32-х и 64-х разрядных приложений. Они понадобятся для запуска скомпилированных exe-файлов. Эти библиотеки должны находиться в одной папке с исполняемым файлом (либо путь до них следует прописать в системную переменную PATH).

    Скачать эти архивы можно здесь:

    Librariesx32.zip
    (1.58 МБ) 971 скачивание
    Librariesx64.zip
    (1.74 МБ) 934 скачивания
  5. Переходим к настройке самой среды разработки DEV C++. Открываем «Сервис» -> «Параметры компилятора» -> вкладка «Компилятор»;

  6. Для каждого набора настроек компилятора добавляем новые параметры в поле «Добавить эти команды к командной строке компоновщика» (порядок следования ключей важен, так как сначала должны идти подключения зависимых библиотек, а только после этого - подключения библиотек, от которых они зависят. Так, graphics зависит от window, а window, в свою очередь зависит от system, поэтому подключаются они в порядке graphics - window - system):

    Код: Выделить всё

    -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-system
    02.jpg
  7. Переходим к вкладке «Каталоги» и так же, для каждого набора настроек компилятора прописываем пути для:

    • «Библиотек»:

      • для 32-х разрядной версии - D:\Soft\Dev-Cpp\SFML-2.2-32\lib

      • для 64-х разрядной версии - D:\Soft\Dev-Cpp\SFML-2.2-64\lib

    • «Включаемых файлов C»:

      • для 32-х разрядной версии - D:\Soft\Dev-Cpp\SFML-2.2-32\include

      • для 64-х разрядной версии - D:\Soft\Dev-Cpp\SFML-2.2-64\include

    • «Включаемых файлов C++»:

      • для 32-х разрядной версии - D:\Soft\Dev-Cpp\SFML-2.2-32\include

      • для 64-х разрядной версии - D:\Soft\Dev-Cpp\SFML-2.2-64\include

    03.jpg

    Примечание: Обратите внимание, что после каждого добавления пути нужно нажимать «ОК», иначе изменения не сохраняются.

На этом настройка IDE DEV C++ закончена.


Замечание 1: Помним, что для правильной работы скомпилированных файлов, необходимо в одну папку с ними добавить файлы библиотек, архивы с которыми можно скачать по ссылке чуть выше.

Замечание 2: Не забываем указывать набор настроек правильной разрядности для корректной компиляции, иначе при попытке выполнения скомпилированного файла получим ошибку.

Замечание 3: Для работы с библиотеками OpenGL в настройках DEV C++ к командной строке компоновщика (п.6 данной инструкции) нужно добавить опцию -lopengl32


Дополнение 1:

Если установлен компилятор GCC MinGW версии GCC 6.1.0 MinGW (DW2) - 32-bit (GCC 6.1.0 MinGW (SEH) - 64-bit), то необходимые файлы качаем отсюда (проверил - эти же файлы подходят для компилятора GCC MinGW Builds 5.3.0):


Дополнение 2:

На одном из компьютеров у меня упорно не хотел запускаться скомпилированный под SFML 2.4.2 (и 32-х, и 64-х разрядный) файл с подключенной библиотекой SFML. Причем, exe-шник нормально компилировался в DEV C++ (настроенной по инструкции выше), но при запуске сразу вылетал с ошибкой. Так же происходило и с готовыми exe-шниками из вложенных в SFML примеров.

Очевидно, что какое-то ПО в системе конфликтовало с одной или несколькими библиотеками, используемыми компилятором TDM-GCC 4.9.2, который установлен по умолчанию в DEV C++ 5.11 либо с библиотеками, используемыми SFML версии GCC 4.9.2 TDM (SJLJ). Исходя из этой предпосылки, я попытался скопировать в папку с exe-файлом различные библиотек dll, которые использует сам компилятор и подключенная библиотека SFML, но это не принесло никакого результата.

При этом, готовые примеры из библиотеки SFML для GCC 6.1.0 MinGW с соответствующими компиляторами (MinGW 5.3.0 и MinGW 6.1.0) отрабатывали нормально. То есть, скачав SFML для GCC 6.1.0 MinGW и компилятор, я брал скомпилированные файлы из примеров SFML, копировал к ним в папку необходимые библиотеки dll (как описано на 4-м шаге инструкции, но немного другие версии библиотек - так как каждый компилятор требует разные dll-ки. В данном случае, из папки bin компилятора нужно было брать libgcc_s_dw2-1.dll и libstdc++-6.dll для 32-х разрядной и libgcc_s_seh-1.dll, libstdc++-6.dll и libwinpthread-1.dll для 64-х разрядной версии. Из папки библиотеки SFML\bin нужно копировать те же файлы, что и в п.4 инструкции, кроме libsndfile-1.dll).

Поэтому, было решено добавить к IDE Dev C++ новые компиляторы, рекомендованные к использованию с SFML версии GCC 6.1.0 MinGW. Пошагово это выглядит так:

  1. Скачиваем наборы библиотеки SFML версии GCC 6.1.0 MinGW для 32-х и 64-х разрядных систем;

  2. Распаковываем их в папку с установленным Dev C++, каждую в отдельную папку;

  3. Скачиваем рекомендованные на SFML версии компиляторов MinGW Builds 6.1.0 (32-bit), MinGW Builds 6.1.0 (64-bit);

  4. Распаковываем каждый архив в любую отдельную папку на диске, при этом желательно, чтобы путь был без пробелов и не содержал кириллические символы;

  5. В Dev C++ заходим в «Сервис» -> «Параметры компилятора» и добавляем новые наборы настроек компиляторов для 32-х и 64-х разрядных версий, указывая путь, куда на предыдущем шаге были распакованы соответствующие компиляторы:

    04.jpg
  6. Для каждого набора настроек прописываем настройки на вкладке «Компилятор», согласно п 4.6 инструкции выше;

  7. Для каждого набора настроек прописываем используемые папки на всех вкладках вкладки «Каталоги», так же как это сделано в уже созданных наборах, но во-первых, изменяя пути до конечной папки а во-вторых, вместо путей к старым папкам библиотеки SFML версии GCC 4.9.2 TDM (SJLJ), указываем пути к новым папкам библиотеки SFML версии GCC 6.1.0 MinGW, которые мы скачали и распаковали в отдельные папки внутри Dev C++ несколькими шагами ранее:

    05.jpg
    06.jpg
    07.jpg
    08.jpg
  8. Остальные настройки можно оставить по умолчанию

Теперь, для работы с библиотекой SFML используем новые наборы настроек компилятора. Они могут быть несовместимы с какими-либо из ранее установленных библиотек, используемых в Dev C++, поэтому, для предыдущих своих проектов продолжаем использовать старые наборы настроек.


Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

thorr413
Сообщения: 1
Зарегистрирован: 15 янв 2018 12:14, Пн

Re: Прикручиваем библиотеку SFML к DEV C++

Сообщение thorr413 »

Примерно такая инструкция должна быть

  1. Качаем компилятор MinGW отсюда, извлекаем в свою папку, например MinGW (если инсталлер ругается, что не может скачать repository.txt, то можно целиком архив скачать отсюда, точнее из первой ссылки перейти на вкладку Files, сама ссылка не работает напрямую. Для 64–разрядной винды выбрать x86_64–win32–seh, для 32–разрядной — x86_64–win32–sjlj).

  2. Качаем SFML для MinGW отсюда, извлекаем в свою папку (например, SFML–2.4.2)

  3. Создаем новые настройки компилятора, указываем путь ко всей папке MinGW, добавляем папки lib и include от нового скачанного SFML

  4. Проще не создавать проект, а просто взять голый cpp–файл (наверное можно и с проектом, но пока не разобрался, что там в параметрах линкера указывать. Скопировал те что были на странице manaeff.ru: –static–libgcc –lgdi32 –lcomdlg32 –luuid –loleaut32 –lole32 –lsfml–graphics –lsfml–window –lsfml–audio –lsfml–system)

  5. Если инклудится что–то типа SFML/OpenGL.hpp, то идем в папку MinGW\x86_64–w64–mingw32\lib, ищем что–то похожее на opengl (это файл libopengl32.a), берем название и заменяем lib на –l, расширение не берем, добавляем это слово в параметры линкера (Compiler options... Add the following commands when calling linker)

  6. Компилируем

  7. Копируем в папку с нашей прогой dll–ки начинающиеся на lib... отсюда MinGW\x86_64–w64–mingw32\lib и начинающиеся на sfml... отсюда SFML–2.4.2\bin

  8. Можно запускать exe–шник

Айдамир

Re: Прикручиваем библиотеку SFML к DEV C++

Сообщение Айдамир »

Что делать если у меня нету файла libgcc_s_seh_64-1.dll.? Где его можно скачать?

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Re: Прикручиваем библиотеку SFML к DEV C++

Сообщение UncleFather »

В инструкции, в первом посте темы есть ссылки


Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Айдамир

Re: Прикручиваем библиотеку SFML к DEV C++

Сообщение Айдамир »

Можете скинуть ссылку?

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Re: Прикручиваем библиотеку SFML к DEV C++

Сообщение UncleFather »

Айдамир, поисковые роботы не любят дублей. Ссылка уже скинута в этой теме, в первом посте. Вам просто нужно подняться вверх до первого сообщения.

01.jpg

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Ответить