Weil das Thema mir keine Ruhe lies, hab ich jetzt mal ernsthaft versucht, SDL unter Lazarus/FPC auf Windows zum Laufen zu bringen.
So wie es aussieht, habe ich dies auch mehr oder weniger geschafft.
Hier meine Vorgehensweise:
Ich habe von http://sourceforge.net/projects/jedi-sdl die JEDI-SDL v1.0 Beta heruntergeladen. Für meine Downloads habe ich, wie viele, ein extra Verzeichnis.
Dann habe ich unter C:\lazarus\units\ ein Verzeichnis mit Namen "sdl" angelegt --> C:\lazarus\units\sdl
Dort habe ich aus dem extrahierten Paket aus allen PAS Ordnern (z.B. JEDI-SDL\Cal3D\Pas, JEDI-SDL\fmod\Pas, JEDI-SDL\Newton\Pas, JEDI-SDL\ODE\Pas, JEDI-SDL\OpenGL\Pas, JEDI-SDL\SDL\Pas, ...) in dieses Verzeichnis unter .\units\sdl reinkopiert. Das sind bei mir knapp 200 Dateien.
Dann habe ich unter "C:\lazarus\fpc\2.2.0\bin\i386-win32" die fpc.cfg geöffnet und die folgenden Zeilen hinzugefügt:
Code: Alles auswählen
# SEARCHPATH FOR SDL STUFF:
-FuC:\lazarus\units\sdl
Datei natürlich gespeichert und vorher Backup gemacht. Sicher ist sicher.
So, dann habe ich mir das erstbeste Beispiel aus dem JEDI-SDL Ordner genommen. In meinem Fall war das JEDI-SDL\SDLSpriteEngine\Demos\Oxygene.
Dann habe ich laut Anleitung mit dem folgenden Befehl das ganz kompiliert.
Code: Alles auswählen
fpc.exe -Sd Oxygene.dpr
Das hat nicht auf Anhieb funktioniert und ich musste die Datei "jedi-sdl.inc" in den Projektordner kopieren, obwohl die Datei auch in meinem ".\units\sdl"-Verzeichnis vorhanden ist. Warum das so ist, kann ich gegenwärtig leider nicht nachvollziehen. Egal, immerhin hat es dann doch noch funktioniert.
Folgendes meldete mir der Compiler:
Free Pascal Compiler version 2.2.0 [2007/11/14] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Win32 for i386
Compiling Oxygene.dpr
Compiling ..\..\Pas\sdlsprites.pas
jedi-sdl.inc(237,4) Warning: Illegal compiler directive "$THREADING"
Oxygene.dpr(1970,5) Warning: Local variable "f" does not seem to be initialized
Linking Oxygene.exe
4072 lines compiled, 0.9 sec, 153808 bytes code, 28280 bytes data
2 warning(s) issued
OK, zwei Warnungen, aber es hat funktioniert.
Ich habe also nun in diesem Ordner eine Datei namens "Oxygene.exe". Voller freude habe ich das Teil gestartet, bekam aber Fehlermeldungen, die sich auf die SDL DLLs beziehen.
Diese DLLs (sdl.dll, sdl_image.dll, sdl_mixer.dll, ...)sind ebenfalls in meinem ".\units\sdl"-Ordner, aber ich brauche sie im Ordner der EXE. Kann ich nachvollziehen und ich glaube, es würde auch funktionieren, wenn die Files unter Windows\system liegen würden.
Also, ich habe es also geschafft auf der Kommandozeile ein SDL-Beispiel zu kompilieren. Folgende Sachen sind noch ausständig:
- Wie kann ich das gleiche in Lazarus anstellen? DPR sind doch Delphi-Projekte, die werde ich wohl nicht einfach so laden können?
- Kann man die Sache mit der jedi-sdl.inc irgendwie verhindern, so dass auch diese aus einem Verzeichnis mit den anderen Libs geholt werden. Wofür steht das *.inc überhaupt und wozu braucht es der Compiler?
Vielleicht kann es ja jemand brauchen?