Tutorial SDL2 Installation: Unterschied zwischen den Versionen
K (→Die richtigen Dateien am richtigen Ort: überflüssiges Wort entfernt) |
(Anleitung für Delphi / Lazarus unter Windows hinzugefügt) |
||
Zeile 37: | Zeile 37: | ||
===DLL-Fehlermeldung=== | ===DLL-Fehlermeldung=== | ||
Bevor du jetzt laut "Fehlermeldung!" stöhnst: Ich sagte bauen, nicht ausführen ;) Die Ausführung funktioniert in der Tat noch nicht, da Windows bei der Ausführung des Programms vergeblich nach der Datei "SDL2.dll" sucht. Diese musst du erst noch in das Verzeichnis kopieren, in dem sich die exe-Datei deines Programms befindet. Du findest sie im Ordner ''SDL2-2.0.3\lib\x86'' (32bit) bzw. in ''SDL2-2.0.3\lib\x64'' (64bit). | Bevor du jetzt laut "Fehlermeldung!" stöhnst: Ich sagte bauen, nicht ausführen ;) Die Ausführung funktioniert in der Tat noch nicht, da Windows bei der Ausführung des Programms vergeblich nach der Datei "SDL2.dll" sucht. Diese musst du erst noch in das Verzeichnis kopieren, in dem sich die exe-Datei deines Programms befindet. Du findest sie im Ordner ''SDL2-2.0.3\lib\x86'' (32bit) bzw. in ''SDL2-2.0.3\lib\x64'' (64bit). | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Delphi / Lazarus unter Windows== | ||
+ | Für Delphi und Lazarus sind alle Schritte gleich, es gibt dann lediglich einen Unterschied beim Eintragen des Pfades im Compiler. Deswegen hier die Zusammenfassung für beide Compiler. | ||
+ | |||
+ | ===SDL2 herunterladen=== | ||
+ | Wir benötigen natürlich auch erst einmal die Library SDL2, diese gibt es auch für uns auf der offiziellen [http://www.libsdl.org SDL Seite]. Allerdings brauchen wir von hier lediglich die ''SDL2.dll'' mit den Programmfunktionen, also nehmen wir das entsprechende Paket der ''Runtime Libraries für Windows''. Im weiteren Verlauf gehen wir mal von der Datei ''SDL2-2.0.3-win32-x86.zip'' aus. Die Versionsnummer kann sich natürlich in Zukunft ändern. Wichtig ist nur, dass das Archiv mit "SDL2-2." beginnt. Die 64-Bit Version benötigt man übrigens nur wenn man echte 64-Bit Programme erzeugt, also NICHT weil man ein 64-Bit Betriebssystem benutzt. | ||
+ | |||
+ | Zusätzlich benötigen wir jetzt noch Header-Dateien für Pascal, unser Compiler möchte ja auch gerne wissen, was so alles in der SDL2.dll enthalten ist ;-) Wir benutzen die Pascal-Portierung der SDL2 Header, die [http://www.delphigl.com/forum/viewtopic.php?f=13&t=10752 hier] erhältlich sind. Auf der GitHub-Seite angekommen schauen wir auf der rechten Seite, dort gibt es eine Schaltfläche "Download ZIP", mit der man die Datei "Pascal-SDL-2-Headers-master.zip" erhält. | ||
+ | |||
+ | ===Archive entpacken=== | ||
+ | Falls noch kein geeignetes Programm zum Entpacken von ZIP-Dateien vorhanden ist -> [http://www.7-zip.org/ 7-Zip]. | ||
+ | Wenn ein anderes Programm benutzt wird solltest Du ja wissen, wie die Archive damit zu entpacken sind. Mit 7-Zip machen wir einen Rechtsklick auf das Archiv und wählen aus dem erscheinenden Kontextmenü "7-Zip", es sollte dann ein Untermenü mit weiteren Befehlen erscheinen. Hier wählen wir entweder "Hier entpacken" oder "Entpacken nach <Archivname>", besser ist die zweite Option. Damit wird in jedem Fall ein Unterordner erzeugt, der so heißt wie das Archiv und in dem sich dann die entpackten Dateien befinden. Nach dem Entpacken sollten also 2 Unterordner vorhanden sein, einer namens ''Pascal-SDL-2-Headers-master'' und einer namens ''SDL2-2.0.3-win32-x86''. | ||
+ | |||
+ | ===Die richtigen Dateien am richtigen Ort=== | ||
+ | Wenn Du schon andere Fremdbibliotheken verwendest, gibt es bei Dir bestimmt einen extra Ordner dafür, im weiteren Verlauf verwenden wir mal ''C:\Library\''. In diesem erstellen wir jetzt beispielsweise einen Unterordner ''SDL2'' und kopieren/verschieben den Inhalt des entpackten Ordners ''Pascal-SDL-2-Headers-master'' hinein. Der Pfad zur Datei ''sdl2.pas'' sieht jetzt also so aus: ''C:\Library\SDL2\sdl2.pas''. Damit haben wir die Header schon mal an einem sinnvollen Ort. | ||
+ | |||
+ | Der Inhalt des zweiten Archivs mit der ''SDL2.dll'' wird im Projektverzeichnis deiner Anwendung benötigt, genauer: Dort wo deine ausführbare Datei erstellt wird. Wenn Du also beispielsweise ein Projekt in ''C:\Projekte\Beispiel\'' hast und deine exe-Datei dort erstellt wird, müssen die Dateien des entpackten Ordners ''SDL2-2.0.3-win32-x86'' dort hinein. Wenn im Projektordner Unterordner wie ''Debug'', ''Release'' usw. für das Erstellen der ausführbaren Datei benutzt werden, muss die ''SDL2.dll'' natürlich dort hinein. | ||
+ | |||
+ | ===Compilereinstellungen=== | ||
+ | Um dem verwendeten Compiler nun die Library SDL2 bekannt zu machen, müssen wir ihm mitteilen in welchem Ordner wir die Header haben. Wie schon oben erwähnt gehen wir davon aus, das der Pfad ''C:\Library\SDL2\'' lautet. | ||
+ | |||
+ | ====Delphi==== | ||
+ | Hier am Beispiel für Delphi 2009, in anderen Versionen sollte das ähnlich sein. | ||
+ | Im Menü wählen wir "Tools" -> "Optionen", im erscheinenden Fenster wählen wir "Umgebungsoptionen" -> "Delphi-Optionen" -> "Bibliothek - Win32". Auf der rechten Seite wird dann der "Bibliothekspfad" angezeigt, wir drücken die Schaltfläche "..." rechts davon. Im erscheinenden Fenster "Verzeichnisse" drücken wir dann wieder die Schaltfläche "...", nun erscheint ein Explorerfenster in dem wir in den Ordner ''C:\Library\SDL2'' auswählen und bestätigen. Im Fenster "Verzeichnisse" danach nicht vergessen auf "Hinzufügen" zu drücken, dann mit "OK" das Fenster schließen. Abschließend im Fenster "Optionen" auch mit "OK" bestätigen. SDL2 kann nun in jedem Projekt verwendet werden, es muss hier nichts mehr in den Projekt-Optionen eingestellt werden. | ||
+ | |||
+ | ====Lazarus==== | ||
+ | Hier am Beispiel für Lazarus 1.2.0, in anderen Versionen sollte das ähnlich sein. | ||
+ | Im Gegensatz zu Delphi gibt es keine mir bekannte Möglichkeit SDL2 generell für alle Projekte verfügbar zu machen. Wir müssen also erst einmal ein Projekt erstellt haben und können dann SDL2 für dieses Projekt folgendermaßen verfügbar machen: Im Menü wählen wir "Projekt" -> "Projekteinstellungen", im sich öffnenden Fenster wählt man "Compilereinstellungen" -> "Pfade". Rechts ist nun der Punkt "Andere Units..." zu sehen. Analog zu Delphi drücken wir rechts daneben die Schaltfläche "...", es erscheint das Fenster "Pfadeditor". Dort die Schaltfläche mit einem gelben Ordnersymbol drücken, im erscheinenden Auswahldialog nun den Ordner ''C:\Library\SDL2'' wählen und mit "OK" bestätigen. Im Fenster "Pfadeditor" danach nicht vergessen auf "Hinzufügen" zu drücken, dann mit "OK" das Fenster schließen. Abschließend im Fenster "Einstellungen für Projekt..." auch mit "OK" bestätigen. Nun kann SDL2 in diesem Projekt verwendet werden. | ||
+ | |||
+ | |||
+ | Der folgende Code sollte nun kompiliert und ausgeführt werden können, vorausgesetzt Du hast nicht vergessen die ''SDL2.dll'' in den Projektordner zu kopieren: | ||
+ | |||
+ | <source lang=pascal>program Project1; | ||
+ | |||
+ | {$APPTYPE CONSOLE} | ||
+ | |||
+ | uses SysUtils, SDL2; | ||
+ | |||
+ | begin | ||
+ | if SDL_Init(SDL_INIT_EVERYTHING) <> 0 then | ||
+ | WriteLn('SDL2 Initialisierung fehlgeschlagen!') | ||
+ | else | ||
+ | WriteLn('SDL2 erfolgreich initialisiert!'); | ||
+ | SDL_Quit(); | ||
+ | Sleep(2000); | ||
+ | end. | ||
+ | </source> | ||
+ | |||
+ | ===DLL-Fehlermeldung=== | ||
+ | Solltest Du beim Starten deines Programms eine Fehlermeldung bekommen (The program can't start because SDL2.dll is missing...) liegt das daran, das die SDL2-dll nicht gefunden wurde. Wie schon oben erwähnt muss diese in den gleichen Ordner kopiert werden wo deine exe-Datei ist. | ||
+ | |||
[[Kategorie:Tutorial|SDL2 Installation]] | [[Kategorie:Tutorial|SDL2 Installation]] |
Version vom 11. April 2014, 20:11 Uhr
(Mehr Informationen/weitere Artikel) Andere Programmiersprachen/IDEs/Betriebssysteme sollten hier nachgetragen werden. |
In diesem Tutorial wird dir gezeigt, wie du deine Entwicklungsumgebung so einrichtest, dass du SDL2-Programme entwickeln kannst. Dies ist Voraussetzung für Tutorial OpenGL3 Lektion 1. Auch wenn das Prinzip überall gleich ist, hängen die Details von der jeweils verwendeten Programmiersprache, von der Entwicklungsumgebung und vom Betriebssystem ab. Daher ist der Rest des Artikels nach Programmiersprache und IDE aufgeteilt.
Inhaltsverzeichnis
Code::Blocks (C++) unter Windows
SDL2 herunterladen
Das erste, was wir benötigen, ist die Library SDL2 selbst. Diese lädst du dir hier herunter. Da wir Entwickler sind, brauchen wir nur, was im Abschnitt "Development Libraries" angeboten wird. Wer Code::Blocks einsetzt, verwendet in der Regel den MinGW-Compiler. Dies ist dann der Fall, wenn man den Compiler gleichzeitig mit Code::Blocks installiert hat. Ist dies der Fall, speichert man als die Datei "SDL2-devel-2.0.3-mingw.tar.gz" auf dem Computer. Die Versionsnummer kann sich natürlich schon geändert haben, wenn du dieses Tutorial liest. Solange sie mit 2.0 beginnt, sollte alles so funktionieren, wie hier beschrieben.
Archiv entpacken
Die heruntergeladene Datei ist ein Archiv, also eine Datei in der weitere Dateien und Ordner komprimiert gespeichert sind. Schließlich wäre es mühsam, 100 Dateien einzeln herunterzuladen, nicht wahr? ;) Um das Archiv zu entpacken, benötigst du ein Archivprogramm auf deinem Computer. Auf den meisten Computern ist das ohnehin installiert. Falls dies bei dir nicht der Fall ist, kann ich 7-zip empfehlen, welches kostenlos (sogar open-source) ist und sehr viele Formate lesen und schreiben kann - insbesondere auch das Format tar.gz. Wenn du das heruntergeladene Archiv entpackt hast, befindet sich auf deiner Festplatte ein Ordner "SDL2-2.0.3" (oder eine andere Versionsnummer).
Die richtigen Dateien am richtigen Ort
Damit der Compiler die heruntergeladenen Code-Dateien auch findet, müssen wir ihm sagen, wo sich diese befinden. Ich rate davon ab, das lokale Downloadverzeichnis (wo sich die Dateien bei dir vermutlich jetzt befinden) als Include-Pfad zu verwenden. Suche dir ein Verzeichnis auf der Festplatte aus, der deinem Ordnungssystem entspricht - auf deinem Computer herrscht doch Ordnung, oder?! ;)
Der Einfachheit halber werde ich im Folgenden einfach annehmen, dass das Verzeichnis C:\include heißt. Darin erstellst du nun einen Ordner namens "SDL2". Nun wechselst du in das von dir entpackte Verzeichnis nach SDL2-2.0.3\include und kopierst alle darin enthaltenen Dateien nach C:\include.
Außerdem brauchen wir noch ein zweites Verzeichnis für Linker-Dateien. Dieses nenne ich hier einfach mal C:\lib. Dorthin werden alle .a-Dateien kopiert, die sich im Ordner SDL2-2.0.3\i686-w64-mingw32\lib (wenn dein Programm 32bit ist) bzw. SDL2-2.0.3\x86_64-w64-mingw32\lib (falls du ein 64bit-Programm schreibst) befinden. Falls du unsicher bist, brauchst du wahrschenlich die 32bit-Version - auch wenn dein Betriebssystem 64bittig ist!
Projekteinstellungen
Falls noch nicht geschehen, startest du nun Code::Blocks und erstellst ein neues Projekt (Konsolenanwendung, "Hello World"-Beispiel). Um sicherzugehen, dass alles andere funktioniert, kompilierst du deine Anwendung erstmal und führst sie aus.
Ist dies erfolgreich, klickst du im Menü auf "Project" -> "Build options..." und wählst in dem sich öffnenden Fenster den Reiter "Search directories". Dieser enthält wiederum zwei Unterreiter "Compiler" und "Linker". Beim Unterreiter "Compiler" klickst du auf "Add" und wählst C:\include aus. Auf die gleiche Weise wählst du beim Unterreiter "Linker" das Verzeichnis C:\lib aus.
Danach wechselst du noch zum Reiter "Linker settings" (neben "Search directories") und fügst folgende Zeile in die Box "other linker options" ein:
-lmingw32 -lSDL2main -lSDL2 -lopengl32
Anschließend natürlich noch mit einem Klick auf OK bestätigen.
Folgender Code sollte nun erfolgreich gebaut (kompiliert und gelinkt) werden können:
#include <iostream>
#include <SDL2/SDL.h>
int main(int argc, char* args[])
{
if(SDL_Init(SDL_INIT_EVERYTHING) != 0)
std::cout << "SDL_Init failed!\n";
else
std::cout << "SDL_Init was successful!\n";
SDL_Quit();
return 0;
}
DLL-Fehlermeldung
Bevor du jetzt laut "Fehlermeldung!" stöhnst: Ich sagte bauen, nicht ausführen ;) Die Ausführung funktioniert in der Tat noch nicht, da Windows bei der Ausführung des Programms vergeblich nach der Datei "SDL2.dll" sucht. Diese musst du erst noch in das Verzeichnis kopieren, in dem sich die exe-Datei deines Programms befindet. Du findest sie im Ordner SDL2-2.0.3\lib\x86 (32bit) bzw. in SDL2-2.0.3\lib\x64 (64bit).
Delphi / Lazarus unter Windows
Für Delphi und Lazarus sind alle Schritte gleich, es gibt dann lediglich einen Unterschied beim Eintragen des Pfades im Compiler. Deswegen hier die Zusammenfassung für beide Compiler.
SDL2 herunterladen
Wir benötigen natürlich auch erst einmal die Library SDL2, diese gibt es auch für uns auf der offiziellen SDL Seite. Allerdings brauchen wir von hier lediglich die SDL2.dll mit den Programmfunktionen, also nehmen wir das entsprechende Paket der Runtime Libraries für Windows. Im weiteren Verlauf gehen wir mal von der Datei SDL2-2.0.3-win32-x86.zip aus. Die Versionsnummer kann sich natürlich in Zukunft ändern. Wichtig ist nur, dass das Archiv mit "SDL2-2." beginnt. Die 64-Bit Version benötigt man übrigens nur wenn man echte 64-Bit Programme erzeugt, also NICHT weil man ein 64-Bit Betriebssystem benutzt.
Zusätzlich benötigen wir jetzt noch Header-Dateien für Pascal, unser Compiler möchte ja auch gerne wissen, was so alles in der SDL2.dll enthalten ist ;-) Wir benutzen die Pascal-Portierung der SDL2 Header, die hier erhältlich sind. Auf der GitHub-Seite angekommen schauen wir auf der rechten Seite, dort gibt es eine Schaltfläche "Download ZIP", mit der man die Datei "Pascal-SDL-2-Headers-master.zip" erhält.
Archive entpacken
Falls noch kein geeignetes Programm zum Entpacken von ZIP-Dateien vorhanden ist -> 7-Zip. Wenn ein anderes Programm benutzt wird solltest Du ja wissen, wie die Archive damit zu entpacken sind. Mit 7-Zip machen wir einen Rechtsklick auf das Archiv und wählen aus dem erscheinenden Kontextmenü "7-Zip", es sollte dann ein Untermenü mit weiteren Befehlen erscheinen. Hier wählen wir entweder "Hier entpacken" oder "Entpacken nach <Archivname>", besser ist die zweite Option. Damit wird in jedem Fall ein Unterordner erzeugt, der so heißt wie das Archiv und in dem sich dann die entpackten Dateien befinden. Nach dem Entpacken sollten also 2 Unterordner vorhanden sein, einer namens Pascal-SDL-2-Headers-master und einer namens SDL2-2.0.3-win32-x86.
Die richtigen Dateien am richtigen Ort
Wenn Du schon andere Fremdbibliotheken verwendest, gibt es bei Dir bestimmt einen extra Ordner dafür, im weiteren Verlauf verwenden wir mal C:\Library\. In diesem erstellen wir jetzt beispielsweise einen Unterordner SDL2 und kopieren/verschieben den Inhalt des entpackten Ordners Pascal-SDL-2-Headers-master hinein. Der Pfad zur Datei sdl2.pas sieht jetzt also so aus: C:\Library\SDL2\sdl2.pas. Damit haben wir die Header schon mal an einem sinnvollen Ort.
Der Inhalt des zweiten Archivs mit der SDL2.dll wird im Projektverzeichnis deiner Anwendung benötigt, genauer: Dort wo deine ausführbare Datei erstellt wird. Wenn Du also beispielsweise ein Projekt in C:\Projekte\Beispiel\ hast und deine exe-Datei dort erstellt wird, müssen die Dateien des entpackten Ordners SDL2-2.0.3-win32-x86 dort hinein. Wenn im Projektordner Unterordner wie Debug, Release usw. für das Erstellen der ausführbaren Datei benutzt werden, muss die SDL2.dll natürlich dort hinein.
Compilereinstellungen
Um dem verwendeten Compiler nun die Library SDL2 bekannt zu machen, müssen wir ihm mitteilen in welchem Ordner wir die Header haben. Wie schon oben erwähnt gehen wir davon aus, das der Pfad C:\Library\SDL2\ lautet.
Delphi
Hier am Beispiel für Delphi 2009, in anderen Versionen sollte das ähnlich sein. Im Menü wählen wir "Tools" -> "Optionen", im erscheinenden Fenster wählen wir "Umgebungsoptionen" -> "Delphi-Optionen" -> "Bibliothek - Win32". Auf der rechten Seite wird dann der "Bibliothekspfad" angezeigt, wir drücken die Schaltfläche "..." rechts davon. Im erscheinenden Fenster "Verzeichnisse" drücken wir dann wieder die Schaltfläche "...", nun erscheint ein Explorerfenster in dem wir in den Ordner C:\Library\SDL2 auswählen und bestätigen. Im Fenster "Verzeichnisse" danach nicht vergessen auf "Hinzufügen" zu drücken, dann mit "OK" das Fenster schließen. Abschließend im Fenster "Optionen" auch mit "OK" bestätigen. SDL2 kann nun in jedem Projekt verwendet werden, es muss hier nichts mehr in den Projekt-Optionen eingestellt werden.
Lazarus
Hier am Beispiel für Lazarus 1.2.0, in anderen Versionen sollte das ähnlich sein. Im Gegensatz zu Delphi gibt es keine mir bekannte Möglichkeit SDL2 generell für alle Projekte verfügbar zu machen. Wir müssen also erst einmal ein Projekt erstellt haben und können dann SDL2 für dieses Projekt folgendermaßen verfügbar machen: Im Menü wählen wir "Projekt" -> "Projekteinstellungen", im sich öffnenden Fenster wählt man "Compilereinstellungen" -> "Pfade". Rechts ist nun der Punkt "Andere Units..." zu sehen. Analog zu Delphi drücken wir rechts daneben die Schaltfläche "...", es erscheint das Fenster "Pfadeditor". Dort die Schaltfläche mit einem gelben Ordnersymbol drücken, im erscheinenden Auswahldialog nun den Ordner C:\Library\SDL2 wählen und mit "OK" bestätigen. Im Fenster "Pfadeditor" danach nicht vergessen auf "Hinzufügen" zu drücken, dann mit "OK" das Fenster schließen. Abschließend im Fenster "Einstellungen für Projekt..." auch mit "OK" bestätigen. Nun kann SDL2 in diesem Projekt verwendet werden.
Der folgende Code sollte nun kompiliert und ausgeführt werden können, vorausgesetzt Du hast nicht vergessen die SDL2.dll in den Projektordner zu kopieren:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, SDL2;
begin
if SDL_Init(SDL_INIT_EVERYTHING) <> 0 then
WriteLn('SDL2 Initialisierung fehlgeschlagen!')
else
WriteLn('SDL2 erfolgreich initialisiert!');
SDL_Quit();
Sleep(2000);
end.
DLL-Fehlermeldung
Solltest Du beim Starten deines Programms eine Fehlermeldung bekommen (The program can't start because SDL2.dll is missing...) liegt das daran, das die SDL2-dll nicht gefunden wurde. Wie schon oben erwähnt muss diese in den gleichen Ordner kopiert werden wo deine exe-Datei ist.