VictorJAM.zapto.org
Software  Borland 

2023-02-05

Compilar con la librería SDL en Borland FreeCommandTools

De vez en cuando me gustar programar cosas simples con un entorno visual y la mejor alternativa es usar un compilador simple y la librería SDL, pero al final cada vez que me acuerdo me encuentro con que al instalar la librería obtengo más errores que beneficios y pierdo el tiempo intentando acordarme de como funciona.

Por eso en este artículo voy a explicar el procedimiento para instalar el compilador y la librería, añadiendo lo que debemos hacer para que compile de la manera mas simple.

Primer paso: instalar el compilador.

Ejecutaremos el archivo freecommandlinetools.exe y lo instalaremos en la ruta por defecto.

C:\Borland\Bcc55

Ahora crearemos dos archivos en la carpeta bien llamados bcc32.cfg y ilink32.cfg.

En el archivo "bcc32.cfg" copiaremos el siguiente contenido:

-I"c:\Borland\Bcc55\include"
-I"c:\Borland\Bcc55\lib"

Y en el archivo "ilink32.cfg" copiaremos el siguiente contenido:

-L"c:\Borland\Bcc55\lib"

Hemos de incluir el camino a la carpeta "c:\borland\bcc55\bin" en el path del sistema operativo. En Windows deberemos hacer click izquierdo en el icono de "Mi PC" o "Este equipo" y propiedades.

En la ventana que se nos abre deberos ir a la opción "configuración avanzada del sistema":

Se nos volverá a abrir una nueva ventana donde veremos un botón que pone "Variables de entorno".

Se nos abrirá la ventana de las variables de entorno.

Tan solo tenemos que editar la variable "Path" pulsando el botón "Editar" y añadiendo una nueva línea con la ruta del compilador (la que pusimos por defecto al principio.

Ya tenemos listo nuestro compilador, ahora vamos a instalar la librería SDL.

Instalar la librería SDL.

Es difícil hacer que la librería compile bien con el compilador gratuito de Borland así que lo más práctico es obtener los binarios compilados para el compilador.

La versión 2.0 de la librería nos causará dolores de cabeza, así que en este artículo he usado la versión 1.2.7 disponible para descarga: SDL 1.2.7. Este archivo incluye dos carpetas: sdl e include; mas un montón de .DLL que son la librería compilada.

En la carpeta del compilador crearemos la carpeta "sdl" y copiaremos en ella las carpetas del .rar include y lib. La estructura nos debe quedar así:

C:\Borland>tree
Listado de rutas de carpetas
El número de serie del volumen es E895-3AB3
C:.
└───bcc55
    ├───Bin
    ├───Examples
    │   └───StdLib
    ├───Help
    ├───Include
    │   ├───Gl
    │   ├───Rw
    │   └───Sys
    ├───Lib
    │   └───PSDK
    └───sdl
        ├───include
        │   └───SDL
        └───lib

Ahora editaremos los archivos bcc32.cfg e ilink32.cfg para que el compilador sepa donde buscar las librerías:

bcc32.cfg:

-I"c:\Borland\Bcc55\include";"c:\Borland\Bcc55\sdl\include"
-I"c:\Borland\Bcc55\lib";"c:\Borland\Bcc55\sdl\lib"

ilin32.cfg:

-L"c:\Borland\Bcc55\lib";"c:\Borland\Bcc55\sdl\lib"

Ejemplo de uso y compilación

Lo primero es incluir la librería sdl, debemos acordarnos de nuestra ruta, así que la primera línea del código debería ser:

#include <sdl/sdl.h>

Si intentamos compilar a pelo usando el comando bcc32 nos tirará de errores para aburrir, así que para compilar deberemos usar la siguiente línea de comandos:

bcc32 -tW -DWIN32 sdl.lib sdlmain.lib fichero.cpp

Con "-tW" le indicamos que es una aplicación windows y con "-DWIN32" que defina "WIN32".

Hemos de añadir las librerías que van a usarse en nuestro programa y que tenemos en la carpeta "lib". Estas pueden ser:

  • sdl (*)
  • sdlmain (*)
  • sdl_image
  • sdl_mixer
  • sdl_ttf
  • smpeg

Obviamente las marcadas con asterisco serán necesarias siempre y será las mínimas a usar. Las otras serán opcionales y dependerá su uso en la línea de comando de si vamos a usarlas o no.

Debemos tener en cuenta que para que funcione todo correctamente las .dll deben estar en la carpeta de nuestro ejecutable.

Referencia

Dentro del archivo .rar encontrarás un archivo .chm con la referencia de la librería.

Puesto que actualmente solo está disponible la versión 2.0 de SDL y está orientada a objetos la referencia de esta no será compatible con la versión 1.2.7.

He aquí un ejemplo de código:

#include <stdlib.h>
#include <stdio.h>
#include "sdl/sdl.h"

int main(int argc, char** argv)
{
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
    SDL_Surface* imagen = SDL_LoadBMP("avatar.bmp");
    SDL_Rect rect;
    rect.x = (screen->w-imagen->w)/2;
    rect.y = (screen->h-imagen->h)/2;
    rect.w = imagen->w;
    rect.h = imagen->h;
    SDL_BlitSurface(imagen, NULL, screen, &rect);
    SDL_Flip(screen);
    SDL_Delay(15000);
    return 0;
}

Y este es el resultado:

Referencias

Programación de Videojuegos con SDL - Alberto García Serrano