aiudaaa!!!

Iniciado por sanxez1, 2 Septiembre 2016, 16:17 PM

0 Miembros y 1 Visitante están viendo este tema.

sanxez1

Llevo toda la mañana tratando soluconar el siguiente error: id returned 1 ext status
                                                                      undefined reference to `WinMain@16' (utilizo dev c++)

Utilizo el compilador TMD-GCC 4.9.2 32-BIT RELEASE

este es el codigo que trato de compilar:
#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>
#include <iostream>

int iniciar();
void realizar_juego();
void terminar();

int iniciar(){
allegro_init();
install_keyboard();
set_color_depth(16);
if (set_gfx_mode(GFX_AUTODETECT,640,480,0,0)<0){
printf("error al iniciar el modo grafico\n");
allegro_exit();
exit(-1);
}
}

void terminar(){
allegro_exit();
}
int main(){
iniciar();
realizar_juego();
terminar();
}
void realizar_juego(){

BITMAP *nave;
PALETTE paleta;
int x,y, x_anterior, y_anterior;
BITMAP * buffer;


nave=load_bitmap("C:/Users/DANIEL/Desktop/Programación/C++/Allegro/Naves/recursos/nave.pcx", paleta);
set_palette(paleta);
if (nave==NULL) terminar();
buffer=create_bitmap(nave->w,nave->h);
clear (buffer);
if (buffer==NULL) terminar();
x=SCREEN_W/2;
y=SCREEN_H/2;

while (!key[KEY_ESC]){

if (key[KEY_UP,KEY_W])
y--;
if (key[KEY_DOWN,KEY_S])
y++;
if (key[KEY_LEFT,KEY_A])
x--;
if (key[KEY_RIGHT,KEY_D])
x++;

if (x<0) x=x_anterior;
if (x>SCREEN_W-nave->w) x=x_anterior;
if (y<0) y=y_anterior;
if (y>SCREEN_H-nave->h) y=y_anterior;
if ((x_anterior!=x) || (y_anterior!=y)){
blit (buffer,screen, 0, 0, x_anterior, y_anterior,buffer->w,buffer->h);
blit (screen,buffer,x,y,0,0,buffer->w,buffer->h);
draw_sprite(screen,nave, x, y);
}
x_anterior=x;
y_anterior=y;


}
}
gracias!!

AlbertoBSD

Hola ya vi tu error, no tienes una funcion Principal definida.

tienes que tener:

int main(){
//llamar a tus funciones aqui.
}


Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

sanxez1

#2
me sigue saliendo el mismo error...

JonaLamper

#3
¿Dónde has declarado el main? Debería ser algo así:

Código (cpp) [Seleccionar]

// Supongamos que aquí empieza tu fichero

// Aquí incluyes tus librerías
using namespace std; // Yo suelo usar el espacio de nombres y lo pongo justo a continuación de las librerías

// Aquí implementas todas tus funciones como por ejemplo: terminar(), realizar_juego(), etc

// Y aquí abajo es donde tienes que poner el main
int main(){
  // Aquí llamas a tus funciones, como te dijo Alberto
  return 0;
}


Otra opción es declarar los prototipos de las funciones arriba, después implementar la función main y después implementar tus funciones (eso quizá estaría mejor), pero si así te sirve también está bien.
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

dato000

Como dijeron arriba, falta un main, además, no confies en Dev-C++, hace mucho tiempo dejo de recibir soporte, por lo que nada raro tenga problemas de compatibilidad con cualquier cosa.

Usa Codeblocks.

Nunca hay que olvidar lo básico en la estructura de lenguaje en programación, en el caso de c++:

Código (cpp) [Seleccionar]

#include <iostream.h>

using namespace std;

main()
{
    cout << "Hello World!";
    return 0;
}



sanxez1

#5
me sigue saliendo lo mismo

MAFUS

Inserta la macro END_OF_MAIN() justo después de la función main():
Código (c++) [Seleccionar]

// ... CÓDIGO
int main() {
    // ... CÓDIGO
}
END_OF_MAIN()
// ... CÓDIGO

sanxez1

Muchísimas gracias a todos, ya funciona!!

Evox4


sanxez1

Después de modificar el código funcionó.