PortadaSFMLInstalcion-806f1160

La App Makers

En este  tutorial se explica como instalar SFML con el IDE de Visual Studio . Explicará cómo:

  • Instalación de SFML.
  • configurar sus proyectos SFML.

Primero, debe descargar el SDK de SFML  para C++ desde la página oficial  de SFML  descarga

Debe descargar el paquete que coincida con su versión de Visual C++. De hecho, una biblioteca compilada con VC++ 15 (Visual Studio 2017) no será compatible con VC++ 16 (Visual Studio 2019), por ejemplo. Si no hay un paquete SFML compilado para su versión de Visual C++, tendrá que compilar SFML usted mismo.

A continuación, puede descomprimir el archivo SFML donde desee. No se recomienda copiar encabezados y bibliotecas a su instalación de Visual Studio, es mejor mantener las bibliotecas en su propia ubicación separada, especialmente si tiene la intención de usar varias versiones de la misma biblioteca o varios compiladores. Creación y configuración de un proyecto SFML.

a) Lo primero que debe hacer es elegir qué tipo de proyecto crear. Se recomienda seleccionar “Proyecto vacío”. La ventana de diálogo ofrece algunas otras opciones para personalizar el proyecto: seleccione “Aplicación de consola” o “Aplicación de Windows” solo si sabe cómo usar encabezados precompilados. A los efectos de este tutorial, debe crear un archivo main.cpp y agregarlo al proyecto, de modo que tengamos acceso a la configuración de C++ (de lo contrario, Visual Studio no sabrá qué idioma usará para este proyecto). Te explicaremos qué poner dentro más tarde.

b) Ahora debemos decirle al compilador dónde encontrar los encabezados SFML (archivos .hpp) y al enlazador dónde encontrar las bibliotecas SFML (archivos .lib).

En las propiedades del proyecto, agregue: La ruta a los encabezados de SFML

La ruta a las librerias SFML en C/C++ » General » Additional Include Directories

<sfml-install-path>/include

donde :

<sfml-install-path> : es la ruta donde descomprimiste la librería.

La ruta del enlazador de SFML en Linker » General » Additional Library Directories

  (<sfml-install-path>/lib

 Estas rutas son las mismas tanto en la configuración de depuración como de versión, por lo que puede configurarlas globalmente para su proyecto (“Todas las configuraciones”). La Siguiente imagen lo resume donde poner las dos rutas para la librería y para el enlazador en todas las configuraciones.

c) El siguiente paso es vincular su aplicación a las bibliotecas SFML (archivos .lib) que necesitará su código. SFML está compuesto por 5 módulos (sistema, ventana, gráficos, red y audio), y hay una biblioteca para cada uno de ellos. Las librerías se deben agregar en las propiedades del proyecto, en Linked » Input » Additional Dependencies. Agregue todas las bibliotecas SFML que necesite, por ejemplo, “sfml-graphics.lib”, “sfml-window.lib” y “sfml-system.lib”.

Es importante vincular a las bibliotecas que coincidan con la configuración: “sfml-xxx-d.lib” para depuración y “sfml-xxx.lib” para versión. Una mala combinación puede provocar bloqueos.

d) La configuración que se muestra aquí hará que su aplicación se vincule a la versión dinámica de SFML, la que necesita los archivos DLL. Si desea deshacerse de estas DLL y tener SFML directamente integrado en su ejecutable, debe vincular a la versión estática. Las bibliotecas SFML estáticas tienen el sufijo “-s”: “sfml-xxx-s-d.lib” para depuración y “sfml-xxx-s.lib” para versión.

En este caso, también deberá definir la macro SFML_STATIC en las opciones de preprocesador de su proyecto.

A partir de SFML 2.2, cuando realice un enlace estático, también deberá vincular todas las dependencias de SFML a su proyecto. Esto significa que si está vinculando sfml-window-s.lib o sfml-window-s-d.lib por ejemplo, también deberá vincular opengl32.lib, winmm.lib y gdi32.lib. Es posible que algunas de estas bibliotecas de dependencia ya estén enumeradas en “Valores heredados”, pero agregarlas nuevamente no debería causar ningún problema.

Estas son las dependencias de cada módulo, agregue -d como se describe anteriormente si desea vincular las bibliotecas de depuración de SFML:

Module Dependencies
sfml-graphics-s.lib
  • sfml-window-s.lib
  • sfml-system-s.lib
  • opengl32.lib
  • freetype.lib
sfml-window-s.lib
  • sfml-system-s.lib
  • opengl32.lib
  • winmm.lib
  • gdi32.lib
sfml-audio-s.lib
  • sfml-system-s.lib
  • openal32.lib
  • flac.lib
  • vorbisenc.lib
  • vorbisfile.lib
  • vorbis.lib
  • ogg.lib
sfml-network-s.lib
  • sfml-system-s.lib
  • ws2_32.lib
sfml-system-s.lib
  • winmm.lib

Es posible que haya notado en la tabla que los módulos SFML también pueden depender unos de otros, ej. sfml-graphics-s.lib depende tanto de sfml-window-s.lib como de sfml-system-s.lib. Si establece un enlace estático a una biblioteca SFML, asegúrese de vincular a las dependencias de la biblioteca en cuestión, así como a las dependencias de las dependencias, etc. Si falta algo a lo largo de la cadena de dependencia, obtendrá errores del enlazador.

Si está un poco confundido, no se preocupe, es perfectamente normal que los principiantes se sientan abrumados por toda esta información sobre enlaces estáticos. Si algo no te funciona a la primera, simplemente puedes seguir intentándolo teniendo siempre en cuenta lo dicho anteriormente.

Si aún no puede hacer que funcionen los enlaces estáticos, puede consultar las Preguntas frecuentes y el foro para encontrar hilos sobre enlaces estáticos. Si no conoce las diferencias entre bibliotecas dinámicas (también llamadas compartidas) y estáticas,  no sabe cuál usar, puede buscar más información en Internet. Hay muchos buenos artículos sobre ellos.

Su proyecto está listo, escribamos algo de código ahora para asegurarnos de que funciona. Coloque el siguiente código dentro del archivo main.cpp:

#include <SFML/Graphics.hpp>
int main()
{
    sf::RenderWindow window(sf::VideoMode(250, 200), "SFML");
    sf::CircleShape shape(120,3);
    shape.setFillColor(sf::Color::Blue);
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.draw(shape);
        window.display();
    }
    return 0;
}

Si eligió crear un proyecto de “aplicación de Windows”, el punto de entrada de su código debe establecerse en “WinMain” en lugar de “main”. Dado que es específico de Windows y, por lo tanto, su código no se compilaría en Linux o macOS, SFML proporciona una forma de mantener un punto de entrada “main” estándar en este caso: vincule su proyecto al módulo sfml-main (“sfml-main-d .lib” en Debug, “sfml-main.lib” en Release), de la misma manera que vinculó sfml-graphics, sfml-window y sfml-system. Ahora compile el proyecto y, si se vinculó a la versión dinámica de SFML, no olvide copiar las DLL de SFML (están en <sfml-install-path/bin>) en el directorio donde se encuentra su ejecutable compilado. Ejecútelo, y si todo funciona, debería ver esto:

Si está utilizando el módulo sfml-audio (independientemente de si es estático o dinámico), también debe copiar la DLL de la biblioteca externa que necesita, que es OpenAL32.dll. Estos archivos también se pueden encontrar en <sfml-install-path/bin>.

Saludos

  • Tutorial
  • Programación
0 Comentarios

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos. Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Nuevo informe

Cerrar

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account