Установка SDL2 в среде разработки CodeBlocks
Запись от Rem_ размещена 22.08.2015 в 19:00
Показов 28091
Комментарии 1
Метки sdl
|
В статье я напишу как нужно правильно ставить SDL2. В некоторой степени я пишу себе подсказки, потому что первый раз я воевал с этой установкой целую ночь. На момент написания статьи актуальные версии: Главная страница - http://libsdl.org/ Страница для скачивания SDL version 2.0.3 (stable) - http://libsdl.org/download-2.0.php Там доступны исходники, бинарные сборки, и то что нам нужно, библиотека для разработчиков. Для кодеблокса выбираем mingw версию. Вот тут появляется первая особенность. Залезаем в архив и видим кучу папок: В теории одна из папок нужна для 64битных систем, но ради максимальной совместимости мы будем использовать другую, 32бинтую версию i686-w64-mingw32. И именно эту папку распаковываем в нужное место. Получилось вот так: Теперь качаем CodeBlocks. Официальный сайт - http://www.codeblocks.org/ Страница для скачивания (бинарники, исходники, репозиторий) - http://www.codeblocks.org/downloads Скачивание бинарников - http://www.codeblocks.org/downloads/26 Нас интересует дистриб с компиляторами. Поэтому выбираем codeblocks-13.12mingw-setup.exe Качать можно с разных мест, я выбрал Sourceforge.net. Установка стандартная, запуск стандартный. Сейчас тоже сделаем немного по особенному. Сначала напишем код (он ясно дело не будет компилироваться), а затем будем подключать библиотеку, чтоб избежать появляющихся ошибок. В кодеблоксе есть шаблон программы для SDL 1.2 но нет для SDL 2. Поэтому начинаем с пустого места. File > New > Project... > ищем иконку Empty project > Go Откроется мастер создания нового проекта. Выбираем папку для проектов, вписываем название, остальные поля заполняются автоматически. Дальше нужно поставить галки, что компилить, версию для дебагера или для релиза. Так как я не понимаю разницы, то выбираю только Release. Жмём Finish. Видно, что в "рабочем пространстве" появился проект, но справа нет кода. Добавим пустой файл в проект. File > New (хотя можно нажать на первую иконку в панели инструментов) > Empty file Появится окно с вопросом "хотите ли вы добавить файл в текущий проект, предварительно сохранив его?" Да. Выбираем место для сохранения (по умолчанию уже будет папка нашего проекта), пишем имя main, расширение .c само добавится. И уже весь проект будет выглядеть таким образом: Сейчас напишем маленький код. Полезности от него никакой, зато можно проверить правильность подключения библиотек.
И вот тут начинается самое весёлое. Нам нужно объяснить кодеблоксу, где брать файлы для корректной работы. Вот попробуем сразу закомпилить нашу программу. Жмём на шестерёнку или Ctrl+F9 Компилятор не понимает где искать заголовочные файлы. Поможем ему. Settings > Compiler... Во вкладке Search directories > вкладка Compiler. Мжём кнопку Add. Указываем папку с подключаемыми заголовочными файлами ...include\SDL. У меня получилось вот так: Пробуем собрать. Жмём шестерёнку. Ошибка. В новой вкладке открывается файл SDL_platform.h и ругается на то, что не видит файла winapifamily.h Ну а это не просто ошибка, а настоящий баг! Причём официальный. И его обещают исправить в следующем релизе. А нам что делать? Нужно качать исправленный файл и подменить им существующий. Качаем этот исправленный - https://hg.libsdl.org/SDL/raw-... platform.h Помещаем его в C:\SDL2\i686-w64-mingw32\include\SDL2. Подтверждаем копирование с заменой. Пробуем скомпилить. Жмём шестерёнку. Куча ошибок: Теперь он не видит нужных SDL функций. Нам нужно прилинковать библиотеки из папки lib. Settings > Compiler... Во вкладке Search directories > вкладка Linker. Мжём кнопку Add. Указываем папку ...\lib Пробуем зарелизить. Жмём шестерёнку. Ошибки остались, растуды твою туды. Ещё нужно прописать волшебную строчку в дополнительных настройках линкера. Settings > Compiler... Во вкладке Linker settings прописать следующее: -lmingw32 -lSDL2main -lSDL2 Жмём. Снова опять жмём шестерёнку. 0 error(s), 0 warning(s) урааааа!!! зарабоооталааааа!!! Срочно нажимаем зелененький треугольничек рядом с шестеренкой: ааыыыыыыыыыыы!! Да что такое то? А это наша уже готовая скомпилированная программа не видит файла динамической библиотеки SDL2.dll Вот тут есть два варианта. Один для вас, другой для тех, кто будет скачивать и запускать ваши программы. Сам файл находится в папке bin - C:\SDL2\i686-w64-mingw32\bin Вариант 1. Для вас. Закинуть файл в папку винды, если у вас есть права администратора. В разных туторах советуют разные подпапки, но почему бы просто не закинуть в C:\Windows ? Я закинул, у меня всё заработало. При запуске программы появляется простое окно с выбранным заголовком, ждёт 3 секунды и закрывается. Вариант 2. Для других людей. В этом случае вы должны будете распространять свою программу вместе с файлом. Положите SDL2.dll рядом с екзешником. В моём случае это D:\Coding\SDL2\First_SDL_prog\bin\Releas e\First_SDL_prog.exe Заархивируйте оба файла (или вообще все файлы, которые будут использоваться в одном проекте) и передавайте другим на тестирование. При запуске программа будет искать лежащий рядом SDL2.dll, и если найдёт то запустится. Если не найдёт, то будет искать в Windows и ещё в нескольких местах. В общем обязательно сопровождайте свои программы этой динамической библиотекой. Ещё возможен вариант с появлением таких ошибок:
Вот теперь точно всё. Вы готовы к установке sdl2 и запуску программ. Вы даже не представляете, как мне пришлось до всего этого доходить. Поэтому я составил такой подробный план, чтоб было всё наглядно и понятно. Удачи всем. | ||||||
Метки sdl
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
-
Запись от Croessmah размещена 25.08.2015 в 20:44


