Hola, que tal me llamo Cristian este es mi primer mensaje. les cuento lo que me paso, venia usando dev-c++ sobre windows y este programa que cuestra texto por pantalla funciona bien, cuando lo pase a linux pude compilarlo bien, pero al ejecutar me abre la ventana de sdl y no muestra el texto. supongo que el problema estara con la libreria sdl_ttf.
aca les pongo el makefile que use sobre linux
#Makefile#
CCP=g++
CC=gcc
INCLUDE=-I"/usr/include/SDL" -I"/usr/include" -D_REENTRANT
LIB=-L/usr/lib -lSDLmain -lSDL -lSDL_ttf -lpthread
FLAGS=-Wall -O2 -ggdb3
ejecutable: main.o
$(CCP) $(FLAGS) -o ejecutable main.o $(LIB)
main.o: main.cpp
$(CCP) $(FLAGS) -c main.cpp -o main.o
clean:
$(RM) ejecutable main.o
//y el programa
//main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include <string.h>
SDL_Rect rectangulo;
SDL_Surface *screen,*ttext;
char msg[6];
struct colores {
int r;
int g;
int b;
} RGB[5];
void dibu(int size, int color, char *texto, int y, int x)
{
TTF_Font *fuente;
SDL_Color fgcolor;
fuente = TTF_OpenFont("aa.ttf",size);
fgcolor.r=RGB[color].r;
fgcolor.g=RGB[color].g;
fgcolor.b=RGB[color].b;
sprintf(msg,"%s",texto);
ttext = TTF_RenderText_Blended(fuente,msg,fgcolor);
rectangulo.y=y;
rectangulo.x=x;
rectangulo.w=ttext->w;
rectangulo.h=ttext->h;
SDL_BlitSurface(ttext,NULL,screen,&rectangulo);
TTF_CloseFont(fuente);
}
int main(int argc, char *argv[]){
RGB[0].r=255;
RGB[0].g=0;
RGB[0].b=0;
RGB[1].r=0;
RGB[1].g=255;
RGB[1].b=0;
RGB[2].r=0;
RGB[2].g=0;
RGB[2].b=255;
RGB[3].r=255;
RGB[3].g=255;
RGB[3].b=0;
RGB[4].r=255;
RGB[4].g=128;
RGB[4].b=0;
SDL_Event event;
int done = 0;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}
screen = SDL_SetVideoMode(330,600,24,SDL_HWSURFACE|SDL_DOUBLEBUF);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: %s\n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);
if (TTF_Init() < 0) {
printf("No se pudo iniciar SDL_ttf: %s\n",SDL_GetError());
return 1;
}
atexit(TTF_Quit);
while(!done){
dibu(60, 0, "C", 70, 80);
dibu(60, 1, "u", 70, 120);
dibu(60, 2, "b", 70, 153);
dibu(60, 3, "i", 70, 188);
dibu(60, 4, "s", 70, 201);
dibu(15, 2, "Cristian Coronel", 150, 95);
dibu(16, 4, "Presione cualquier tecla para comenzar", 500, 10);
SDL_BlitSurface(ttext,NULL,screen,&rectangulo);
SDL_FreeSurface(ttext);
while(done == 0) {
while ( SDL_PollEvent(&event) ) {
if ( event.type == SDL_KEYDOWN )
done = 1;
}
}
}
return 0;
}
Si alguien me puede dar una mano.
Saludos y gracias.[/code]