Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿pero Por Que No Compilas Esto C*****?

Iniciado por Pcsl, 27 de Diciembre de 2003, 09:47:15 PM

« anterior - próximo »

Pcsl

 Hola.Este es mi primer mensaje en el foro aunque llevo leyendoos desde hace mucho tiempo.Hace nada empezé a leer la documentación de Allegro.Pero cuando me bajé el devpak desde dev-cpp de allegro y lo instalé, al crear un nuevo proyecto con Allegro Static me daba el siguiente error. "-lalleg C:\Dev-Cpp\G__~1.EXE linker input file unused because linking not done" y " [Linker error] undefined reference to `_imp__font' "y otros cuantos mas parecidos a este ultimo a ver si me decis como solucionarlo.   :D
Un Saludo...

Geo

 quizá sea un error de compatibilidad entre la versión de mingw que usas y la versión con la cual fué compilado el devpak. Los DevPaks son muy prácticos puesto que facilitan muchísimo la instalación de nuevas librerías, pero en el caso de Allegro, no es tan complicado si sigues estos pasos.

Supongamos que no tienes instalado ni Allegro ni Dev-C++:


  • Descarga:

    • Dev-C++ (la última versión es la 4.8.9.5) de http://www.bloodshed.net/dev
    • Allegro (código fuente) de http://alleg.sourceforge.net/wip.html puedes descargarte la última versión estable (la 4.0.3) donde dice Stable branch 4.0.3 source releases, es el primer archivo (all403.zip); o la última inestable (aunque sólo es la etiqueta puesto que trabaja muy bien, la 4.1.12) de la sección Unstable developement branch 4.1.12 source releases, nuevamente el primer archivo.
    • El DirectX SDK para mingw (versión mínima), en la misma página de las descargas de allegro, en la sección Miscellaneous files, de preferencia el de DirectX 8.
  • Instala Dev-C++, sigue los pasos, de preferencia instálalo en C:\Dev-cpp (sin ++, ni espacios ni otros caracteres especiales).
  • Descomprime el SDK de DirectX a la carpeta donde instalaste Dev-C++ (C:\Dev-cpp), cuando te pregunte si deseas reemplazar algún archivo por uno existente, checa si el que está instalado es más reciente que el que estás descomprimiendo, quédate con el más reciente (algunos de los archivos que vienen con Dev-Cpp son más recientes que los que vienen con el SDK).
  • Descomprime Allegro a la carpeta donde instalaste Dev-Cpp, entonces tendrás una carpeta llamada allegro dentro de C:\Dev-cpp.
  • Ahora hay que configurar el PATH:

    • Win9x: abre el archivo C:\autoexec.bat (con Notepad puedes hacerlo) y pon estas líneas al final del archivo:

      SET PATH=C:\Dev-Cpp\bin;%path%
      SET MINGDIR=C:\Dev-Cpp

    • WinNT/XP/2000: Panel de Control->Sistema->Opciones avanzadas->Variables de entorno, busca la variable Path y dale a modificar, agrega C:\Dev-cpp\bin; (suponiendo que instalaste Dev-C++ en c:\Dev-cpp), clic en Aceptar. Ahora, en la misma sección, clic en Nueva, y en nombre de la variable pones MINGDIR, en valor de la variable C:\Dev-cpp, clic en Aceptar.
    En ambos casos hay que reiniciar (o volver a hacer login en NT) para que los cambios tengan efecto.
  • Ahora abre una ventana de MS-DOS, ve a la carpeta C:\Dev-cpp\allegro, ahora ejecuta lo siguiente:
    fix mingw32
    make
    Aquí tardará un poco, ten paciencia.
    make install
    Con esto se instalará la librería, ahora hay que probarla :).
  • Abre Dev-C++, crea un nuevo proyecto (Windows application), se creará el proyecto con un archivo con código de ejemplo, borra todo y pon esto:

    #include <allegro.h>

    int main() {
     allegro_init();
     allegro_message("SI funciona!!");
     allegro_exit();

     return 0;
    } END_OF_MAIN();

    Guarda el archivo.
  • Ve a Proyecto->Opciones de proyecto->Parámetros y en donde dice Linker agrega -lalleg. Dale Aceptar.
  • Ahora compila y ejecuta el programa, debe aparecer una ventana de diálogo con el texto SI funciona!! ;).
Si por alguna razón no puedes instalarlo (o no quieres), te paso un DevPak con la instalación que yo hice :).

Saludos,
José Jorge (Geo).
a vida que viene y yo me voy.

Pcsl

 Muchas gracias por tu detallada explicacion.He echo todo lo que me has dicho y el código ese que me has puesto se ejecuta bien pero sin embargo el siguiente no #include <allegro.h>

int main()
{
// Initialize Allegro.        
allegro_init();      

// Set the resolution to 640 by 480 with SAFE autodetection.
set_gfx_mode(GFX_SAFE, 640, 480, 0, 0);

// Installing the keyboard handler.
install_keyboard();

// Printing text to the screen.
textout(screen, font, "Hello World!", 1, 1, 10);
textout(screen, font, "Press ESCape to quit.", 1, 12, 11);

// Looping until the ESCape key is pressed.
while(! key[KEY_ESC])
  poll_keyboard(); // This shouldn't be necessary in Windows.

// Exit program.
allegro_exit();
return 0;    
}    

// Some Allegro magic to deal with WinMain().
END_OF_MAIN();

Este codigo me da los errores que dije en el anterior mensaje.A ver si sabeis como lo puedo solucionar.Un saludo

Geo

 ¿Hiciste esto?
CitarVe a Proyecto->Opciones de proyecto->Parámetros y en donde dice Linker agrega -lalleg. Dale Aceptar.


Saludos,
José Jorge (Geo).
a vida que viene y yo me voy.

Pcsl


Geo

a vida que viene y yo me voy.

Pcsl

 Ese era un proyecto que venia de ejemplo con la libreria allegro

Geo

 Bien, no sé cuál sea el error, pero estoy pensando en algunas cosas:


  • El pack que te bajaste contenía la versión 4.0 (si no me equivoco, que fué el último devpak de Allegro disponible para Dev-C++), el problema es que ese DevPak fué compilado con la versión de MinGW que entonces venía con la descarga de Dev-C++ (creo que era la 2.9.7), y la actual versión de Dev-C++ vienen con MinGW 3.2 (si mal no recuerdo), que no es compatible con muchas de las bibliotecas compiladas con la anterior versión. Esa es muy probablemente la razón de los errores que pusiste en tu primer post.
  • Ahora, si instalaste Allegro siguiendo las instrucciones que mencioné, prueba creando un nuevo proyecto de la manera como mencioné (recuerda que es un proyecto en C) y pega el código fuente que ahora has puesto (no habras el de ejemplo), yo lo he compilado sin problemas (sólo me manda unos mensajes warning sobre un par de funciones "deprecated", se debe a que uso la versión 4.1.12).
Por último, ¿qué SO tienes? ¿Qué versión de Dev-C++? ¿Sabes la versión de MinGW (te descargaste la que viene con Dev-C++? ¿Qué versión de Allegro instalaste?

Saludos,
José Jorge (Geo).
a vida que viene y yo me voy.

Geo

 Por cierto, si te interesa, acabo de poner un DevPak de Allegro 4.1.12 en mi página: http://geosoft.webcindario.com :D.

Saludos,
José Jorge (Geo).
a vida que viene y yo me voy.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.