Alexander A Manaeff -

 
 

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

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

Модератор: UncleFather

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

Сообщение UncleFather » 28 мар 2017 14:16, Вт

Задача:

Необходимо подключить библиотеку 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 МБ) Скачиваний: 120
    SFML-2.2-windows-gcc-4.8.1-tdm-64-bit.zip
    (10.52 МБ) Скачиваний: 323


  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 МБ) Скачиваний: 103
    Librariesx64.zip
    (1.74 МБ) Скачиваний: 80

  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++, поэтому, для предыдущих своих проектов продолжаем использовать старые наборы настроек.
Аватара пользователя
UncleFather
Site Admin
 
Сообщения: 1307
Зарегистрирован: 17 авг 2004 16:20, Вт

Вернуться в Java, C, C++, C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Alexander A Manaeff -
@Mail.ru .