![]() |
![]() ![]() ![]() ![]() Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek |
Na tej lekcji dowiesz się czym jest biblioteka SDL oraz jak należy ją poprawnie zainstalować w środowisku Dev-C++. Opisane procedury odnoszą się wyłącznie do tego środowiska.
SDL (ang. Simple DirectMedia Layer) jest wieloplatformową, przenośną biblioteką multimedialną, zaprojektowaną w celu udostępnienia bezpośrednich funkcji i procedur sterujących dźwiękiem, klawiaturą, myszką, joystickiem oraz grafiką 3D poprzez OpenGL i grafiką 2D poprzez bufor obrazu wideo.
SDL wspiera systemy Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX i QNX. Wspiera również w ograniczonym stopniu systemy AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS i OS/2.
Biblioteka SDL jest napisana w języku C, lecz pracuje bezpośrednio również z C++ i umożliwia łączenie z kilkoma innymi językami, łącznie z Adą, C#, Eiffelem, Erlangiem, Euphorią, Guile'em, Haskellem, Javą, Lispem, Lua'ą, ML'em, Objective C, Pascalem, Perlem, PHP, Pike'em, Pliantem, Pythonem, Ruby i Smalltalk'ierm.
SDL rozprowadzana jest zgodnie z licencją GNU LGPL w wersji 2. Licencja ta pozwala na bezpłatne korzystanie z z SDL w programach komercyjnych, pod warunkiem, że programy łączą się bezpośrednio z dostarczoną biblioteką dynamiczną SDL.dll.
Dla celów tego kursu w pierwszym rzędzie powinieneś zaopatrzyć się w odpowiednie, zintegrowane środowisko do programowania w języku C++. W sieci Internet można znaleźć wiele darmowych środowisk programowania, jednakże polecamy szczególnie Dev-C++ firmy Bloodshed. Jest on darmowy i pozwala na tworzenie dobrego oprogramowania w warunkach amatorskich.
Środowisko Dev-C++ jest proste i mało wymagające. Bez problemu uruchomi się na niezbyt nowym komputerze - wystarczy, że działa na nim system Windows XP. Prostota jednakże okupiona jest pewnymi niewygodami - np. przy uruchamianiu aplikacji. Jeśli się jednak do nich przyzwyczaisz, to jest to doskonały wybór dla celów edukacyjnych i hobbistycznych.
Po poprawnej instalacji środowiska programistycznego musisz zainstalować bibliotekę SDL. Poniżej krok po kroku opisano procedury instalacyjne. Ponieważ dostaję dużo listów na temat problemów z instalacją czy uruchomieniem prezentowanych w naszym serwisie programów, proponuję dokładnie zapoznać się z tymi procedurami - większość opisywanych przez was trudności polega na pominięciu niektórych czynności, co w efekcie skutecznie uniemożliwia tworzenie oprogramowania dla SDL.
Jeśli masz poprawnie zainstalowane środowisko IDE Dev-C++, to możesz przystąpić do zainstalowania w nim biblioteki SDL. W tym celu przejdź do strony projektu SDL:
Po lewej stronie masz menu, które prowadzi do różnych sekcji w obrębie witryny projektu SDL. Wyszukaj sekcję Download i kliknij link SDL 1.2 (w przyszłości numer wersji biblioteki SDL może wzrosnąć, np. SDL 1.3, SDL 2.0 itp). Obecnie (luty 2009) jest to pierwszy link w sekcji Download.
Link ten zaprowadzi cię na stronę z różnymi składnikami SDL. Każda dystrybucja SDL składa się z trzech elementów:
Biblioteki dynamicznej SDL.dll. Jest ona niezbędna dla każdego programu napisanego pod SDL. Powinna być umieszczona albo w tym samym katalogu co program, albo w katalogu C:\Windows\System32. Powiemy o tym za chwilę.
Biblioteki dla programów w C++ - SDL.lib oraz SDLmain.lib - te muszą być dołączane do każdego programu w SDL przez program linkera - jak to zrobić, dowiesz się w następnym rozdziale.
Pliki nagłówkowe zawierające prototypy funkcji i danych dla SDL. Pliki te dołączamy dyrektywą #include do tekstów programów SDL.
Wszystkie te składniki znajdziesz w odpowiednim pliku dystrybucyjnym biblioteki SDL. Zatem wyszukaj na stronie tekst:
W sekcji Win32 znajduje się pakiet dla kompilatora Mingw32 o nazwie SDL-devel-1.2.13-mingw32.tar.gz (Mingw32). Numerki 1.2.13 oznaczają numer wersji biblioteki SDL i w przyszłości mogą być inne. Kliknij myszką ten link. Pojawi się okienko pobrania pliku - wybierz opcję Zapisz.
Następnie wskaż dowolny katalog tymczasowy, w którym zostanie zapisany plik SDL-devel-1.2.13.tar.tar. Jest to archiwum typu tar (ang. tape archive). Aby je rozpakować, musisz posiadać w swoim systemie odpowiednie narzędzie. Proponuję ściągnąć i zainstalować program WinRAR. Po uruchomieniu wskazujemy pobrane archiwum SDL-devel-1.2.13.tar.tar:
i klikamy ikonę Wypakuj do...
Pojawi się okno wyboru katalogu, do którego zostanie rozpakowane wybrane archiwum. Jeśli nic nie będziesz tu ruszał (zalecam), to archiwum SDL-devel-1.2.13.tar.tar będzie rozpakowane do folderu SDL-devel-1.2.13-mingw32 umieszczonego w tym samym katalogu, co plik SDL-devel-1.2.13.tar.tar. Zatem kliknij przycisk OK i rozpocznie się proces rozpakowywania.
Po rozpakowaniu archiwum możesz zamknąć aplikację WinRAR - nie będzie już potrzebna.
Poprzez Start → Mój komputer wchodzisz do katalogu SDL-1.2.13 znajdującego się wewnątrz folderu, do którego WinRAR rozpakował archiwum. W okienku Windows Explorera powinieneś zobaczyć poniższą zawartość.
Teraz musisz wykonać trzy kopiowania. Skup się, bo jeśli wykonasz to źle, programy SDL nie będą działały lub nie dadzą się poprawnie skompilować.
W katalogu bin znajduje się plik SDL.dll, który przekopiuj do C:\Windows\System32. Jeśli będziesz miał kłopoty z umieszczeniem tam pliku SDL.dll (np. masz ograniczone prawa dostępu), to plik SDL.dll należy każdorazowo umieścić w katalogu projektu (C:\Dev-Cpp\Prj\xxx). To ważne. Jeśli aplikacja SDL nie będzie mogła załadować biblioteki dynamicznej SDL.dll, to po prostu ta aplikacja się nie uruchomi i już. Wynikają z tego dwie uwagi:
Uwaga 1: plik SDL.dll należy umieszczać w dystrybucji programów SDL, które chcesz rozpowszechniać w postaci skompilowanej.
Uwaga 2: plik SDL.dll powinien pochodzić z tej samej dystrybucji biblioteki SDL, co reszta plików. W przeciwnym razie może dojść do różnych konfliktów.
Cały katalog include przekopiuj do katalogu C:\Dev-Cpp. W efekcie w katalogu C:\Dev-Cpp\include powinien się pojawić katalog SDL (sprawdź to!), w którym znajdują się pliki nagłówkowe dla dyrektywy #include. Pliki nagłówkowe dołączamy do tekstów programów pisanych pod bibliotekę SDL. Zawierają one prototypy funkcji i typów danych używanych w środowisku SDL.
Cały katalog lib przekopiuj do katalogu C:\Dev-Cpp. Po tej operacji w katalogu C:\Dev-Cpp\lib powinny znaleźć się trzy dodatkowe pliki:
libSDL.la, libSDL.a oraz libSDLmain.a
Są to biblioteki dołączane do kodu aplikacji SDL przez konsolidator (program łączący wygenerowany kod z bibliotekami).
Po tych działaniach środowisko SDL jest już zainstalowane w IDE Dev-C++.
Podane poniżej czynności wykonujesz dla każdego nowego projektu SDL.
Uruchom IDE Dev-C++. Jeśli masz w IDE jakiś inny projekt, wybierz z menu opcję Plik → Zamknij projekt.
Kliknij ikonę nowego projektu lub z menu wybierz opcję Plik → Nowy → Projekt.
W oknie dialogowym nowego projektu wybierz ikonę Windows Application. Wpisz nazwę swojego projektu i kliknij myszką przycisk OK.
Projekt zapisz w wybranym katalogu - zawsze dla nowego projektu twórz osobny katalog..
Następnie wybierz z menu opcję Projekt → Opcje projektu. W okienku dialogowym kliknij zakładkę Parametry i w okienku Konsolidator wpisz poniższy tekst (najlepiej przekopiuj go z tej strony poprzez schowek Windows):
-lmingw32
-mwindows
-lSDLmain
-lSDL
Kliknij przycisk OK. Powrócisz do edytora IDE Dev-C++. W edytorze znajduje się szablon aplikacji Windows. W SDL nie jest on nam potrzebny. Będąc w edytorze wciśnij Ctrl-A (zaznacza wszystko) i Delete (kasuje zaznaczony tekst). Okienko edytora powinno zrobić się puste.
Teraz wpiszemy do edytora tekst programu SDL. Nie przejmuj się, jeśli nie rozumiesz zastosowanych w nim konstrukcji - wszystko wyjaśnimy na kolejnych zajęciach kursu. Skopiuj cały poniższy tekst programu do schowka i wklej go w edytorze IDE Dev-C++.
// Test instalacji biblioteki SDL // (C)2008 Koło Informatyczne // I LO w Tarnowie // P003 //------------------------------- #include <SDL/SDL.h> int main(int argc, char *argv[]) { if(!SDL_Init(SDL_INIT_VIDEO)) { atexit(SDL_Quit); SDL_Surface * screen = SDL_SetVideoMode(321, 241, 32, SDL_HWSURFACE); if(SDL_MUSTLOCK(screen)) SDL_LockSurface(screen); for(int x = 0; x < 321; x++) for(int y = 0; y < 241; y++) { Uint32 * p = (Uint32 *) screen -> pixels + y * screen -> pitch / 4 + x; * p = x % 16 ? 0x880000L : 0xffff00L; } for(int x = 0; x < 321; x++) for(int y = 0; y < 241; y += 16) { Uint32 * p = (Uint32 *) screen -> pixels + y * screen -> pitch / 4 + x; * p = 0xffff00L; } if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); SDL_UpdateRect(screen, 0, 0, 0, 0); int waiting = 0; do { SDL_Event event; while (SDL_PollEvent(&event)) if ((event.type == SDL_QUIT) || (event.type == SDL_KEYDOWN) && (event.key.keysym.sym == SDLK_ESCAPE)) waiting = 1; } while(!waiting); } return 0; } |
Zapisz tekst w edytorze klikając ikonę dyskietki na pasku narzędziowym. Możesz pozostawić nazwę main.cpp. Teraz kliknij ikonę kompilacji i uruchomienia:
Jeśli nie popełniłeś błędów, to program powinien się skompilować do twojego katalogu pod wybraną przez ciebie nazwą i uruchomić. Na ekranie monitora pojawi się małe okno z brązowym tłem i żółtą kratką.
Pojawienie się tego okienka świadczy o poprawności instalacji i konfiguracji wszystkich niezbędnych składników do tworzenia aplikacji SDL. Jeśli okienka nie otrzymasz, to zapewne popełniłeś jakiś błąd. Wróć do początku i wykonaj DOKŁADNIE WSZYSTKIE opisane czynności. To MUSI DZIAŁAĆ.
![]() | I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe