He jugado con C++ por un tiempo y recientemente comencé a usar SDL y SDL2 .
Pude hacer funcionar el programa de demostración dot .
Pero otros programas, como el copiado y pegado de Lazy Foo' Productions, no parecen funcionar. Tengo SDL y SDL2 instalados (y desinstalados y reinstalados). Estoy en Ubuntu 15.04 y tengo los IDE CodeBlocks vinculados ( -ISDL2 ). Los errores son SDL_Window - SDL_WINDOWPOS_UNDEFINED - SDL_WINDOW_SHOWN - SDL_CreateWindow - SDL_GetWindowSurface - SDL_UpdateWindowSurface y, finalmente, SDL_DestroyWindow -- no fue declarada en este ámbito.
Además, incluyo:
#include </usr/include/SDL/SDL.h> #include </usr/include/SDL2/SDL.h> #include <stdio.h> Estoy bastante seguro de que no necesito toda esa ubicación, pero tampoco funcionó sin ella. Otra nota, cuando escribo #includes , CodeBlocks sugerirá SDL2/SDL.h pero no SDL/SDL.h .
¿Qué me estoy perdiendo?
No creo que pueda poner el código de Lazy Foo aquí, no obtuve permiso...
El código que enumeró;
#include </usr/include/SDL/SDL.h> #include </usr/include/SDL2/SDL.h> #include <stdio.h>¿Por qué no lo cambias a
#include <SDL2/SDL.h> #include <stdio.h> como el primer encabezado es donde se SDL_CreateWindow y otras funciones de SDL2?
Además, no necesita incluir encabezados SDL y SDL2. De hecho, esa podría ser la fuente de su problema, ya que solo necesitaría incluir la versión que está utilizando.
Si está siguiendo los tutoriales del sitio de lazyfoo, puede verificar si los que está siguiendo usan SDL1.2 o SDL2 desde su tabla de contenido, ya que el sitio tiene los tutoriales para ambas versiones.
ACTUALIZAR:
No me di cuenta de que su plataforma es una plataforma Linux. Entonces es mucho más fácil resolver su problema. La demostración que siguió anteriormente se realizó con SDL-1.2, mientras que el error gcc insinuó que está utilizando SDL-2.0, por lo tanto, SDL_CreateWindow y otros errores no definidos. Debe instalar la biblioteca SDL-2.0 y los archivos de desarrollo SDL-2.0 (que le proporcionarán los encabezados SDL-2.0 necesarios). Puede hacer referencia a los paquetes SDL-2.0 proporcionados por la distribución de su plataforma.
En cuanto a la compilación, será igual que el tutorial que siguió con un cambio menor, en lugar de gcc sdltest.o -lSDL -o sdltest , emitirá gcc sdltest.o -lSDL2 -o sdltest para indicar que está vinculando su código con la biblioteca SDL2.
EDITAR
Un programa SDL simple para probar su entorno. Puede usar cualquiera de los editores de texto más simples como nano o gedit u otros para editar esto y ejecutar el comando de compilación anterior para probar su configuración.
La forma más sencilla de hacer esto es copiar el código, luego desde su terminal, cat > sdltest.cpp y pegue el código, luego presione [ENTRAR] y [CTRL-C] para finalizarlo. Luego puede ejecutar el comando de compilación como se mencionó anteriormente, g++ sdltest.cpp -lSDL2 -o sdltest .
Código;
#include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Window *p; SDL_Renderer *w; p = SDL_CreateWindow("Game",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,800,640,SDL_WINDOW_SHOWN); w = SDL_CreateRenderer(p, -1, 0); SDL_RenderClear(w); SDL_SetRenderDrawColor(w,255,0,0,255); SDL_Rect Rect = {220,140,200,200}; SDL_RenderFillRect(w,&Rect); SDL_RenderPresent(w); SDL_Delay(3000); SDL_DestroyRenderer(w); SDL_DestroyWindow(p); SDL_Quit(); return 0; }Espero que ayude.