Partage
  • Partager sur Facebook
  • Partager sur Twitter

SFML Compilation

Sujet résolu
    2 juin 2020 à 16:12:20

    Bonjour à tous, j'ai commencé ce tuto et je galère un peu avec SFML. J'ai des erreurs externes de type LNK2001. J'ai regardé comment installer correctement SFML sur leur site officiel, j'ai tout configuré sur Visual C++. Voici les erreurs du débogage :

    ErreurLNK2001symbole externe non résolu "public: static class sf::RenderStates const sf::RenderStates::Default" (?Default@RenderStates@sf@@2V12@B)Test SFMLC:\Users\Thomas\source\repos\Test SFML\Test SFML.obj1
    ErreurLNK2001symbole externe non résolu "public: static class sf::Color const sf::Color::Green" (?Green@Color@sf@@2V12@B)Test SFMLC:\Users\Thomas\source\repos\Test SFML\Test SFML.obj1
    ErreurLNK2019symbole externe non résolu _main référencé dans la fonction "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)Test SFMLC:\Users\Thomas\source\repos\Test SFML\MSVCRTD.lib(exe_main.obj)1
    ErreurLNK11203 externes non résolusTest SFMLC:\Users\Thomas\source\repos\Test SFML\Debug\Test SFML.exe1
    et 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;
    }

    -
    Edité par Chi_Iroh 2 juin 2020 à 16:13:51

    • Partager sur Facebook
    • Partager sur Twitter
      2 juin 2020 à 22:56:32

      Salut ! Tu n'aurais pas oublié de lier la bibliothèque dédiée aux graphismes à ton programme ?
      • Partager sur Facebook
      • Partager sur Twitter
        3 juin 2020 à 6:41:15

        Salut, en fait j'ai suivi le tuto sur le site de sfml qui explique comment lier la bibliothèque a un projet Visual.

        J'ai peut être oublié un détail

        • Partager sur Facebook
        • Partager sur Twitter
          3 juin 2020 à 9:53:51

          J"utilise la sfml avec CodeBLocks et Visual et j'ai pas de soucis.

          Je pense que tu as oublié un detail lors de la configuration de ton idée...

          • Partager sur Facebook
          • Partager sur Twitter
            3 juin 2020 à 11:57:08

            Salut,

            Une toute première question, avant d'aller plus loin:  Es tu sur d'avoir pris la version compilée de la SFML qui correspond au compilateur que tu utilise?

            Si tu vas sur la page de téléchargement de la SFML, tu remarques en effet que, pour windows, il n'y a pas moins de ... 9 versions différentes: six versions utilisables avec les différentes versions de Visual Studio (3 en 32 bits, et 3 en 64 bits) et trois pour différentes distributions de Gcc : TDM (Gcc-5.1.0 - SJLJ - 32 bits), Gcc-7.3.0 - DW2 - 32bits et Gcc-7.3.0 - SEH - 64 bits.

            Ce n'est pas sans raison!  C'est parce que l'ABI (Application Binary Interface ou, si tu préfère en français Interface binaire avec l'application; autrement dit: la manière dont une bibliothèque et un programme vont communiquer) n'est pas formalisée et peut changer entre deux versions du même compilateur.

            Il faut donc veiller à utiliser la version de la bibliothèque qui correspond au compilateur que l'on utilise (nombres de bits compris).

            Si tu as, par exemple, téléchargé la version "Gcc-7.3.0 - SEH - 64 bits" et que tu utilises Visual Studio 2017 (32 bits), il n'y a aucune chance pour que cela fonctionne ;)

            Bien sur, si tu veux utiliser un autre compilateur, il te reste toujours la possibilité de compiler toi-même la SFML (et ce n'est pas ** très ** compliqué) ;)

            • Partager sur Facebook
            • Partager sur Twitter
            Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
              3 juin 2020 à 13:43:21

              Je code sous VS Community 2019 donc j'ai utilisé CMake pour faire les lib comme indiqué sur le site officiel. Apres au débogage, j'ai des erreurs d'inclusion donc je dois revérifier les paramsètres du projet.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                3 juin 2020 à 16:45:48

                Salut,

                Ma foi, comme ça on ne peut donner que des possibilités mais c'est difficile de répondre de façon ferme à la question.

                Un piège assez courant avec Visual Studio, c'est qu'on configure tout pour un mode de compilation (par exemple Release), en oubliant de choisir de configurer le projet pour toutes les configurations ! Du coup si après ça on veut builder en mode Debug, le projet n'est pas configuré ! :lol:

                C'est une question bête mais t as compilé les DLL avec la même architecture que pour ton projet ?

                Une autre question bête serait alors de savoir si les chemins sont bons, mais je pense que tu as déjà dû vérifier 118 fois ! Si ça peut aider (et que tu ne le sais pas déjà), utilise le plus possible les macros de Visual pour définir les chemins vers les dépendances comme $(SolutionDir), $(Configuration), etc. En plus tu pourras avoir les chemins absolus dans la partie basse de la popup où tu définis les chemins.

                -
                Edité par Anonyme 3 juin 2020 à 16:46:36

                • Partager sur Facebook
                • Partager sur Twitter
                  3 juin 2020 à 17:42:25

                  Merci. Je vais tout re-re-re-re...vérifier :) !

                  Bonne journée !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 juin 2020 à 16:27:09

                    PS:

                    Sous vVsual Studio, le plus simple est encore d'incorporer les bibliothèques dans ton projet via le gestionnaire de paquets NuGet, il se charge de tout configurer pour toi.

                    De plus, en procédant ainsi, tu ne va pas polluer tes autres projets.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 juin 2020 à 9:29:32

                      Bonjour, j'ai installé sfml-system, sfml-window, sfml-audio, sfml-network et sfml-graphics avec NuGet.

                      VS reconnaît le code (pas de problème de coloration syntaxique), mais au moment du débogage, j'ai 18 externes. Faut-il (en +) lier les lib dans les paramètres du projet ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 juin 2020 à 10:43:43

                        As-tu copié les DLL dans le dossier de ton executable ? (NuGet ne fait pas cette manip).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 juin 2020 à 12:30:29

                          Non parce que je n'ai pas de DLLs. Je code sous VS2019 et j'ai généré les .lib avec CMAKE.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 juin 2020 à 13:46:41

                            Oula, stop !

                            Soit tu passe par NuGet, soit par CMAKE, mais ne fait pas un mélange obscure des 2.

                            Le compilateur s'attend à trouver les libs issues d'un système, mais celles que tu lui présente sont issues d'un autre. Pas étonnant qu'il te tire les oreilles.

                            -
                            Edité par Deedolith 5 juin 2020 à 13:48:50

                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 juin 2020 à 19:08:04

                              Ce que je veux dire c'est que en fait, j'ai essayé une 1ere fois avec CMake sur 1 projet. Et comme ça a pas fonctionné, j'ai essayé avec NuGet sur un autre projet. Et je trouve pas de DLLs ni de libs avec NuGet...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                7 juin 2020 à 2:11:12

                                Essaie d'utiliser un autre IDE voir...j'utilise Code::Blocks avec SFML moi xD.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 juin 2020 à 2:42:16

                                  Hehe, n'oublie pas de prendre un abonnement pour le prochain topic qui s'intitulera "Problème sur Code::Blocks avec SFML". Changer d'IDE c'est pas régler le problème, c'est le contourner. Et passer de Visual Studio à Code::Blocks pour un problème de compilation, c'est pas contourner le problème, c'est provoquer les ténèbres en leur montrant tes fesses alors que tu sais pertinemment que le feu de l'enfer va te les brûler.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    7 juin 2020 à 2:53:56

                                    Daimyo_ a écrit:

                                    Hehe, n'oublie pas de prendre un abonnement pour le prochain topic qui s'intitulera "Problème sur Code::Blocks avec SFML". Changer d'IDE c'est pas régler le problème, c'est le contourner. Et passer de Visual Studio à Code::Blocks pour un problème de compilation, c'est pas contourner le problème, c'est provoquer les ténèbres en leur montrant tes fesses alors que tu sais pertinemment que le feu de l'enfer va te les brûler.


                                    Ouais peut etre mais c'est nickel chez moi depuis bientot 07 mois que je l'utilise. Et son probleme vient surement de la configuration qu''il a fait, donc je pense que changer d'ide est mieux pour lui, ou abandonner la sfml. De plus, aider n'est pas facile puisqu'on ne connait pas ce qu'il trafiqué sur son ide avant
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      7 juin 2020 à 3:43:34

                                      > Ouais peut etre mais c'est nickel chez moi

                                      Oui, peut-être pas chez lui.

                                      > Et son probleme vient surement de la configuration qu''il a fait, donc je pense que changer d'ide est mieux pour lui

                                      Ou réviser sa configuration... non ?

                                      > ou abandonner la sfml

                                      Mouais... si c'est pour lacher le but initial autant partir sur Python ou Perl directement.

                                      > De plus, aider n'est pas facile puisqu'on ne connait pas ce qu'il trafiqué sur son ide avant

                                      C'est justement pour ça qu'on essaie de faire ce qu'on peut pour apporter une solution.

                                      Bref... Encore une fois, on ne contourne pas un problème ! On n'abandonne pas au moindre souci, parce que si l'on suit ta logique, après avoir eu un problème sur C::B il devra utiliser CodeLite, puis CLion, puis trucC++jesaispas... Je pense que s'il poste sur le forum c'est car il tient à trouver un solution.

                                      Combien se tuent à dire que Code::Blocks n'est pas forcément à jour par rapport aux nouveautés, ou qu'il est plus susceptible de faire galérer un débutant qui ne s'en n'est jamais servi que Visual Studio ?

                                      -
                                      Edité par Daimyo_ 7 juin 2020 à 3:46:27

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        7 juin 2020 à 12:28:19

                                        Daimyo_ a écrit:

                                        Bref... Encore une fois, on ne contourne pas un problème ! On n'abandonne pas au moindre souci, parce que si l'on suit ta logique, après avoir eu un problème sur C::B il devra utiliser CodeLite, puis CLion, puis trucC++jesaispas... Je pense que s'il poste sur le forum c'est car il tient à trouver un solution.

                                        -
                                        Edité par Daimyo_ il y a environ 8 heures


                                        Ouais merci. Je m'y suis mal pris pour l'aider
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 juin 2020 à 4:31:13

                                          faut telecharger la bonne lib sur le site de la sfml , celui qui va avec ton compilo.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          SFML Compilation

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown