Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: C++ - SFML | undefined reference to sf:: ...  (Lu 3043 fois)

0 Membres et 1 Invité sur ce sujet

Virapho

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
C++ - SFML | undefined reference to sf:: ...
« le: Mars 28, 2018, 02:01:58 pm »
Bonjour !
Je voudrais installer SFML avec code::blocks mais je n'y arrive pas :/
Mon problème est le suivant :
J'ai suivu le tutoriel https://www.sfml-dev.org/tutorials/2.4/start-cb-fr.php pour utiliser SFML avec code::blocks, j'ai copié le code :

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    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;
}

Seulement... Lorsque je clique sur Debug / Continue, et bien je n'ai aucune fenêtre qui apparait, et dans "Build messages" il y a undefined reference to sf:: ...  , il y a 23 erreurs.
J'ai bien respecté l'ordre de sfml-graphics, sfml-window et sfml-system.

Dans Project Build Option -> Debug -> Linker settings, j'ai mis : .../libsfml-graphics-s-d.a , libsfml-window-s-d.a et libsfml-system-s-d.a.
Pour Release, j'ai mit .../ libsfml-graphics-s.a , libsfml-window-s.a , libsfml-system-s.a.
J'ai également mis SFML_STATIC dans #defines sur mon projet.
J'ai fais mes recherches google et j'ai vu qu'il y avait pas mal de personne qui avaient le même problème que moi (undefined reference to sf:: ...), mais je n'ai rien trouvé qui pouvait m'aidé, même sur le forum SFML :(
J'espères avoir été clair, merci de vos futurs réponses ^^

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: C++ - SFML | undefined reference to sf:: ...
« Réponse #1 le: Mars 28, 2018, 02:24:03 pm »
Est-ce que tu as lu le passage qui commence par "Depuis SFML 2.2, lors d'une liaison statique, il faut aussi lier toutes les dépendances de SFML" ?

Ce serait bien aussi d'avoir les messages d'erreur exacts. Avec une description telle que "undefined reference to ..." tout ce qu'on peut répondre c'est qu'il "manque un truc" ;)
« Modifié: Mars 28, 2018, 02:26:06 pm par Laurent »
Laurent Gomila - SFML developer

Virapho

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re: C++ - SFML | undefined reference to sf:: ...
« Réponse #2 le: Mars 28, 2018, 04:17:36 pm »
Oui, j'ai lu tout ce qu'il y avait comme info sur le site ^^'

J'ai résolu le problème, je penses que c'est parce que dans Project Build -> Debug, je devais mettre sfml-graphics-d, sfml-window-d et sfml-system-d (je devais écrire sa moi-même, hors j'avais été dans le dossier lib pour mettre /SFML/lib/libsfml-graphics-d.a ... J'ai du faire la même chose pour release, mais sans le ' -d '
J'ai également du retirer le SFML_STATIC et prendre la version 32-bit de SFML.

C'est une vidéo sur youtube qui m'a aidé, et dedans il était expliqué qu'il était préférable de prendre la version 32-bit au lieu de la 64-bit, et que cela n'avais aucun rapport avec le fait que vous ayez Windows 64 bit.

Voila comment j'ai résolu mon problème ^^

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: C++ - SFML | undefined reference to sf:: ...
« Réponse #3 le: Mars 28, 2018, 09:09:24 pm »
Citer
Oui, j'ai lu tout ce qu'il y avait comme info sur le site ^^'
N'empêche que tu avais lié SFML statiquement mais pas ses dépendances.

Citer
J'ai résolu le problème, je penses que c'est parce que dans Project Build -> Debug, je devais mettre sfml-graphics-d, sfml-window-d et sfml-system-d (je devais écrire sa moi-même, hors j'avais été dans le dossier lib pour mettre /SFML/lib/libsfml-graphics-d.a ... J'ai du faire la même chose pour release, mais sans le ' -d '
J'ai également du retirer le SFML_STATIC
Tu n'as pas vraiment résolu ton problème, tu l'as contourné en passant sur la version dynamique de SFML.

Citer
C'est une vidéo sur youtube qui m'a aidé, et dedans il était expliqué qu'il était préférable de prendre la version 32-bit au lieu de la 64-bit, et que cela n'avais aucun rapport avec le fait que vous ayez Windows 64 bit.
C'est expliqué sur la page de téléchargement de SFML.
Laurent Gomila - SFML developer