Форум программистов, компьютерный форум, киберфорум
Rem_
Войти
Регистрация
Восстановить пароль

Установка SDL2 в среде разработки CodeBlocks

Запись от Rem_ размещена 22.08.2015 в 19:00
Показов 28220 Комментарии 1
Метки sdl

В статье я напишу как нужно правильно ставить SDL2. В некоторой степени я пишу себе подсказки, потому что первый раз я воевал с этой установкой целую ночь.

На момент написания статьи актуальные версии:
Главная страница - http://libsdl.org/
Страница для скачивания SDL version 2.0.3 (stable) - http://libsdl.org/download-2.0.php
Там доступны исходники, бинарные сборки, и то что нам нужно, библиотека для разработчиков. Для кодеблокса выбираем mingw версию.
Нажмите на изображение для увеличения
Название: 2015-08-20 04 19 35.png
Просмотров: 916
Размер:	8.6 Кб
ID:	3261
Вот тут появляется первая особенность. Залезаем в архив и видим кучу папок:
Нажмите на изображение для увеличения
Название: 2015-08-22 09 24 28.png
Просмотров: 565
Размер:	22.4 Кб
ID:	3262
В теории одна из папок нужна для 64битных систем, но ради максимальной совместимости мы будем использовать другую, 32бинтую версию i686-w64-mingw32. И именно эту папку распаковываем в нужное место. Получилось вот так:
Название: 2015-08-22 10 48 53.png
Просмотров: 6201

Размер: 9.6 Кб

Теперь качаем CodeBlocks.
Официальный сайт - http://www.codeblocks.org/
Страница для скачивания (бинарники, исходники, репозиторий) - http://www.codeblocks.org/downloads
Скачивание бинарников - http://www.codeblocks.org/downloads/26
Нас интересует дистриб с компиляторами. Поэтому выбираем codeblocks-13.12mingw-setup.exe Качать можно с разных мест, я выбрал Sourceforge.net.
Нажмите на изображение для увеличения
Название: 2015-08-22 10 53 43.png
Просмотров: 748
Размер:	15.4 Кб
ID:	3264
Установка стандартная, запуск стандартный.
Сейчас тоже сделаем немного по особенному. Сначала напишем код (он ясно дело не будет компилироваться), а затем будем подключать библиотеку, чтоб избежать появляющихся ошибок.

В кодеблоксе есть шаблон программы для SDL 1.2 но нет для SDL 2. Поэтому начинаем с пустого места.
File > New > Project... > ищем иконку Empty project > Go
Откроется мастер создания нового проекта. Выбираем папку для проектов, вписываем название, остальные поля заполняются автоматически.
Нажмите на изображение для увеличения
Название: 2015-08-22 14 51 04 project title.png
Просмотров: 730
Размер:	29.0 Кб
ID:	3265
Дальше нужно поставить галки, что компилить, версию для дебагера или для релиза. Так как я не понимаю разницы, то выбираю только Release. Жмём Finish.
Название: 2015-08-22 14 56 30 empty proj.png
Просмотров: 6226

Размер: 5.5 Кб
Видно, что в "рабочем пространстве" появился проект, но справа нет кода. Добавим пустой файл в проект.
File > New (хотя можно нажать на первую иконку в панели инструментов) > Empty file
Появится окно с вопросом "хотите ли вы добавить файл в текущий проект, предварительно сохранив его?" Да.
Выбираем место для сохранения (по умолчанию уже будет папка нашего проекта), пишем имя main, расширение .c само добавится.
Нажмите на изображение для увеличения
Название: 2015-08-22 15 10 02 save main.png
Просмотров: 642
Размер:	32.8 Кб
ID:	3267
И уже весь проект будет выглядеть таким образом:
Нажмите на изображение для увеличения
Название: 2015-08-22 15 27 52 proj file.png
Просмотров: 696
Размер:	7.6 Кб
ID:	3268

Сейчас напишем маленький код. Полезности от него никакой, зато можно проверить правильность подключения библиотек.
C
1
2
3
4
5
6
7
8
9
10
#include <SDL.h>
 
int main( int argc, char* args[] )
{
    SDL_Init( SDL_INIT_EVERYTHING );
    SDL_CreateWindow("My first sdl window", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
    SDL_Delay(3000);
    SDL_Quit();
    return 0;
}
Программа должна подключить заголовочный файл SDL.h. Инициализировать все свои подсистемы. Создать окно с заголовком в определенном месте определенных размеров, показать его. Подождать 3 секунды. Закрыть SDL. Вернуть значение 0.



И вот тут начинается самое весёлое. Нам нужно объяснить кодеблоксу, где брать файлы для корректной работы. Вот попробуем сразу закомпилить нашу программу. Жмём на шестерёнку или Ctrl+F9
Нажмите на изображение для увеличения
Название: 2015-08-22 16 05 12 SDL no file.png
Просмотров: 860
Размер:	3.2 Кб
ID:	3269
Компилятор не понимает где искать заголовочные файлы. Поможем ему.
Settings > Compiler... Во вкладке Search directories > вкладка Compiler. Мжём кнопку Add. Указываем папку с подключаемыми заголовочными файлами ...include\SDL. У меня получилось вот так:
Нажмите на изображение для увеличения
Название: 2015-08-22 16 14 07 include sdl.png
Просмотров: 695
Размер:	3.3 Кб
ID:	3270

Пробуем собрать. Жмём шестерёнку. Ошибка. В новой вкладке открывается файл SDL_platform.h и ругается на то, что не видит файла winapifamily.h
Нажмите на изображение для увеличения
Название: 2015-08-22 17 06 41 winapi h.png
Просмотров: 817
Размер:	14.1 Кб
ID:	3271
Ну а это не просто ошибка, а настоящий баг! Причём официальный. И его обещают исправить в следующем релизе. А нам что делать? Нужно качать исправленный файл и подменить им существующий.
Качаем этот исправленный - https://hg.libsdl.org/SDL/raw-... platform.h
Помещаем его в C:\SDL2\i686-w64-mingw32\include\SDL2. Подтверждаем копирование с заменой.

Пробуем скомпилить. Жмём шестерёнку. Куча ошибок:
Нажмите на изображение для увеличения
Название: 2015-08-22 17 36 27 undef ref.png
Просмотров: 633
Размер:	8.1 Кб
ID:	3272
Теперь он не видит нужных SDL функций. Нам нужно прилинковать библиотеки из папки lib.
Settings > Compiler... Во вкладке Search directories > вкладка Linker. Мжём кнопку Add. Указываем папку ...\lib
Нажмите на изображение для увеличения
Название: 2015-08-22 17 46 07 add lib.png
Просмотров: 466
Размер:	17.5 Кб
ID:	3273

Пробуем зарелизить. Жмём шестерёнку. Ошибки остались, растуды твою туды.
Ещё нужно прописать волшебную строчку в дополнительных настройках линкера.
Settings > Compiler... Во вкладке Linker settings прописать следующее:
-lmingw32 -lSDL2main -lSDL2
Нажмите на изображение для увеличения
Название: 2015-08-22 17 55 01 lmingw.png
Просмотров: 852
Размер:	3.1 Кб
ID:	3274

Жмём. Снова опять жмём шестерёнку.
0 error(s), 0 warning(s)
урааааа!!! зарабоооталааааа!!!
Срочно нажимаем зелененький треугольничек рядом с шестеренкой:
Нажмите на изображение для увеличения
Название: 2015-08-22 18 05 03.png
Просмотров: 683
Размер:	23.2 Кб
ID:	3275
ааыыыыыыыыыыы!! Да что такое то? А это наша уже готовая скомпилированная программа не видит файла динамической библиотеки 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 и ещё в нескольких местах. В общем обязательно сопровождайте свои программы этой динамической библиотекой.

Ещё возможен вариант с появлением таких ошибок:
||=== Build: Release in First_SDL_prog (compiler: GNU GCC Compiler) ===|
ld.exe||cannot find -lSDL2main|
ld.exe||cannot find -lSDL2|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 8 second(s)) ===|
Это значит, что вы правильно прописали строчку в дополнительных настройках линкера, но не правильно указали папку lib.

Вот теперь точно всё. Вы готовы к установке sdl2 и запуску программ.
Вы даже не представляете, как мне пришлось до всего этого доходить. Поэтому я составил такой подробный план, чтоб было всё наглядно и понятно.
Удачи всем.
Метки sdl
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для Croessmah
    Для вас. Закинуть файл в папку винды, если у вас есть права администратора. В разных туторах советуют разные подпапки, но почему бы просто не закинуть в C:\Windows ? Я закинул, у меня всё заработало.
    Достаточно прописать путь к папке с библиотеками в переменную PATH и всё!
    Запись от Croessmah размещена 25.08.2015 в 20:44 Croessmah вне форума
 
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru