Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: amchacon en 22 Marzo 2013, 17:40 pm



Título: Instalando SFML en Codeblocks (SOS)
Publicado por: amchacon en 22 Marzo 2013, 17:40 pm
Me estoy volviendo loco para instalar esta librería en CodeBlocks (Windows):

- Primero me descargo el full SDK de aquí:
http://www.sfml-dev.org/download.php
- Copia las carpetas lib y include a la carpeta de Mingw
- Creo un proyecto en blanco, voy a build options y pongo:

(http://img201.imageshack.us/img201/2927/1asf.png)

- Introduzco la macro SFML_STATIC tal como sale en el tutorial:

(http://www.sfml-dev.org/tutorials/2.0/images/start-cb-static.png)

Añado un archivo al proyecto y pongo un código de ejemplo:

Código
  1. #include <SFML/Window.hpp>
  2.  
  3. int main()
  4. {
  5.    sf::Window window(sf::VideoMode(800, 600), "My window");
  6.  
  7.    // run the program as long as the window is open
  8.    while (window.isOpen())
  9.    {
  10.        // check all the window's events that were triggered since the last iteration of the loop
  11.        sf::Event event;
  12.        while (window.pollEvent(event))
  13.        {
  14.            // "close requested" event: we close the window
  15.            if (event.type == sf::Event::Closed)
  16.                window.close();
  17.        }
  18.    }
  19.  
  20.    return 0;
  21. }
  22.  

Clico en compilar, errores:

Citar
c:\mingw\bin\..\lib\gcc\mingw32\4.7.2\..\..\..\libsfml-window-s.a(VideoMode.cpp.obj):VideoMode.cpp|| undefined reference to `__gxx_personality_sj0'|
c:\mingw\bin\..\lib\gcc\mingw32\4.7.2\..\..\..\libsfml-window-s.a(VideoMode.cpp.obj):VideoMode.cpp|| undefined reference to `_Unwind_SjLj_Register'|
c:\mingw\bin\..\lib\gcc\mingw32\4.7.2\..\..\..\libsfml-window-s.a(VideoMode.cpp.obj):VideoMode.cpp|| undefined reference to `_Unwind_SjLj_Unregister'|
c:\mingw\bin\..\lib\gcc\mingw32\4.7.2\..\..\..\libsfml-window-s.a(VideoMode.cpp.obj):VideoMode.cpp|| undefined reference to `_Unwind_SjLj_Resume'|
||=== Build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===|

Pruebo ahora a enlazar con las librerías dinámicas, elimino la macro STATIC y compilo. Ahora compila correctamente, copio las DLL a la carpeta y ejecuto el programa. Me da error:

(http://img209.imageshack.us/img209/5366/sinttulokca.png)

Me estoy volviendo loco, LOCO


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: ukol en 22 Marzo 2013, 23:03 pm
¿Qué paquete te bajaste de SFML?
Esas funciones que no puede referenciar son del sistema de excepciones de gcc para c++, hay 2 tipos y no se pueden mezclar en el mismo ejecutable. Probablemente sea un problema de compatibilidad binaria.


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: amchacon en 23 Marzo 2013, 18:34 pm
¿Qué paquete te bajaste de SFML?
Esas funciones que no puede referenciar son del sistema de excepciones de gcc para c++, hay 2 tipos y no se pueden mezclar en el mismo ejecutable. Probablemente sea un problema de compatibilidad binaria.
La versión 2.0... Completa.

He desinstalado y reinstalado Mingw+Codeblocks. Ahora compila en estático pero sigo sin poder ejecutarlo.


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: ukol en 23 Marzo 2013, 21:16 pm
Hay 2 tipos de soporte por GCC a las excepciones de C++, SJLJ(de setjmp/longjmp) y DWARF2 exception handling, no sé mucho más en profundidad, las funciones a las que hace referencia el error de compilación es de este tipo, lo que sucede por mezclar binarios incompatibles(uno que use un sistema y otro que use otro), por eso no puede mezclaros, juntarlos en un ejecutable, linkarlos.
Busca sobre esto, tendrás que buscar otros binarios quizás, o cambiar alguna opción de compilador o linker, o cambiar de compilador o de linker.

Si dices que compila en estático, pon el error?


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: amchacon en 23 Marzo 2013, 22:16 pm
Este es el error cuando compilo en estático y ejecuto:
(http://img62.imageshack.us/img62/1301/sinttulowod.png)


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: X3R4CK3R en 28 Julio 2013, 04:49 am
Hola, siempre he compilado en dinámico y no he tenido ningún problema. Ayer salió SFML 2.1, me dispuse a instalarlo, compilo, todo bien, y a la hora de ejecutar me pasa exactamente lo que te pasaba a tí, he probado en estático y lo mismo, la única diferencia es que a mí el problema me lo da libstdc++-6.dll en lugar de sfml-window-2.dll

EDIT: El módulo que da error al compilar en estático es: ntdll.dll :huh: :-X
No creo que sea problema de los módules que den error, sino algo como lo que mencionó @ukol, la verdad es que este tipo de problemas son desconcertantes, toca enloquecer un poco a ver si damos con el fallo, que seguramente al final sea una tontería, en fin...  :xD

EDIT2: Volviendo a SFML2.0, puedo compilar tanto en estático como en dinámico, sin problemas, el problema me lo da la versión 2.1.

EDIT3: Tras juguetear mucho con las opciones del compilador, logré compilar 2.1, tanto estático como dinámico también, lo extraño es que juraría que ha funcionado de la misma forma que me daba antes error... :-\ además solo conseguí compilar en estático sfml-graphics,window y system;  audio y network me dan undefined errors, cuando tenga todo bien postearé la "solución"

EDIT4:
además solo conseguí compilar en estático sfml-graphics,window y system;  audio y network me dan undefined errors
Eso en SFML2.0, en SFML2.1 me ha compilado todo en estático perfectamente, en fin, mejor espero a que te conectes, te aconsejaría que te mudases a SFML2.1, es totalmente compatible con cualquier código en 2.0, sólo han fixeado varios bugs (como el icono en la barra de inicio, que se quedaba pillado, a mí me molestaba mucho).

Saludos


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: amchacon en 28 Julio 2013, 11:58 am
He conseguido compilar estáticamente en SFML 2.1. Voy a ponerme con el debug y ya lo tendré todo listo ^^


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: anonimo12121 en 7 Agosto 2013, 17:28 pm
He conseguido compilar estáticamente en SFML 2.1. Voy a ponerme con el debug y ya lo tendré todo listo ^^
Como lo has configurado entonces?


Título: Re: Instalando SFML en Codeblocks (SOS)
Publicado por: amchacon en 7 Agosto 2013, 17:39 pm
http://www.sfml-dev.org/tutorials/2.1/compile-with-cmake.php

Y una vez compiladas:
http://www.sfml-dev.org/tutorials/2.1/start-cb.php