¿Cómo instalar bibliotecas en codeblocks?

Iniciado por DickGumshoe, 14 Junio 2012, 22:50 PM

0 Miembros y 3 Visitantes están viendo este tema.

Ferno

Siempre fue un poco rebuscado usar estas librerías.
Si vas a compilar desde un IDE, prueba leer esto:

http://wiki.allegro.cc/index.php?title=END_OF_MAIN

El END_OF_MAIN creo que era necesario para salvar algunos problemas que surgían de que en Windows se utilice el WinMain.
Puede que con eso se solucione, leete esa wiki que es corta y buscá ejemplos de como usar el END_OF_MAIN en un programa.
Espero que se solucione, saludos!

DickGumshoe

Muchas gracias por responder, Ferno.

Sí, el END_OF_MAIN lo pongo en el programa. Lo que hago es esto:


#include <allegro.h>

int main()
{
allegro_init();
install_keyboard();

set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 700, 0, 0);

BITMAP *buffer = create_bitmap(640, 700);
clear_to_color(buffer, 0x333333);

rect(buffer, 1, 1, 51, 51, 0x21D059);
rect(buffer, 2, 2, 50, 50, 0x21D059);
rect(buffer, 3, 3, 49, 49, 0x21D059);

textout_centre_ex(buffer, font, ALLEGRO_VERSION_STR, 320, 5, 0xFFFFFF, 0x333333);

rectfill(buffer, 50, 100, 550, 600, 0xDF1680);

blit(buffer, screen, 0, 0, 0, 0, 640, 700);

readkey();

destroy_bitmap(buffer);

return 0;
}
END_OF_MAIN()


Por supuesto, antes de hacer el intento de compilar he seguido infinitos manuales en los que viene lo mismo (que meta tres carpetas (bin, lib e include en unos directorios que me indican) y los tres archivos .dll en la carpeta donde compilaré el proyecto y se creará el .exe, pero nada...

El error que me da es:

Citar
ld.exe||cannot find -lalld|
||=== Build finished: 1 errors, 0 warnings ===|

Muchas gracias, saludos.

Ferno

¿Probaste incluir <windows.h>?
Cuando usé allegro alguna vez según recuerdo tenía que incluir alguna librería de Windows (aunque a esta altura no recuerdo exactamente cuál era). Más aún, había que incluirla antes que la librería de allegro, porque sino había un problema de referencias (no me adentré a fondo en ese tema, con que compilara ya me satisfació y decidí no tocarlo más, grave error, pero buen).

DickGumshoe

Incluyendo windows.h antes de allegro.h me da los siguiente errores:

c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|31|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|209|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|210|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|211|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|211|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|212|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|212|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\system.h|213|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\mouse.h|74|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\mouse.h|74|error: invalid type in declaration before ';' token|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\mouse.h|99|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\mouse.h|109|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\mouse.h|112|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|29|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|67|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|67|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|68|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|68|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|69|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|69|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|70|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|70|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|71|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|71|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|72|error: using typedef-name 'BITMAP' after 'struct'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\wingdi.h|1353|error: 'BITMAP' has a previous declaration here|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\allegro\3d.h|72|error: using typedef-name 'BITMAP' after 'struct'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 0 warnings ===|


Saludos.

Ferno

A ver, buscando encontré que entre los includes de windows.h y allegro.h podrías incluir:

#include <winalleg.h>

Prueba y contanos.

Perdón que no pueda darte una respuesta precisa, pero como te dije, hace años que no uso allegro y tampoco lo usé demasiado!

DickGumshoe

Muchas gracias, Ferno.

Si incluyo <winalleg.h> antes de <allegro.h> automáticamente se me abre una pestaña de winalleg.h que dice:

   #error Please include allegro.h before winalleg.h!

Así, he probado todas las combinaciones entre esas dos librerías y windows.h, y nada...

No te preocupes si no puedes, Ferno. Muchas gracias.

Saludos...

DickGumshoe

#16
Bueno, viendo que no voy a conseguir nunca usar allegro...

¿Podríais recomendarme otra librería gráfica que sea fácil de usar, que tenga manuales en español y buenos y permita hacer, por ejemplo, un videojuego?

Saludos y gracias.

EDITO: También que se pueda usar fácilmente en Codeblocks, a ver si me va a pasar lo mismo que con Allegro y voy a pasarme otro día entero intentando utilizarla  :-[

Ferno

No desistas amigo! Yo estuve en tu mismo problema cuando lo usé y terminé solucionándolo.
Pero si ya estás decidido, podés usar SDL. Hay PDFs con ejemplos y tutoriales para crear juegos simples. También tiene una muy buena documentación online.

DickGumshoe

Bueno, seguiré intentándolo durante el día de hoy. Pero cuando consigo solucionar un error... Viene otro. Y lo raro es que nadie comenta nada por Internet...

Sino, utilizaré SDL.

Gracias de nuevo por responder.

Foxy Rider

Citarld.exe||cannot find -lalld|
||=== Build finished: 1 errors, 0 warnings ===|

es alleg, no alld ... fijate que en otro hilo señalaba esta diferencia ...  saludos ♥