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" onclick="window.open(this.href);return false; 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

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
Folgendes meldete mir der Compiler:
OK, zwei Warnungen, aber es hat funktioniert.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

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?