Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de threads en c++.

Erreur : "thread" was not declared in this scope.

Sujet résolu
    22 juin 2022 à 11:47:33

    Bonjour !

    Je recherche de l'aide car le programme suivant :

    #include <iostream>
    #include <thread>
    
    using namespace std;
    
    void f(){
        cout << "Ceci est un message à executer par un thread." << endl;
    }
    
    int main()
    {
        thread t(f);
        t.join();
        cout << "terminé !";
    
        return 0;
    }
    

    retourne l'erreur suivante lors de la compilation :

    erreur : "thread" was not declared in this scope

    et quand j'ajoute "std::" devant le "thread" de la ligne 12, j'obtient :

    erreur : "thread" is not a member of "std"

    Je cherche donc de l'aide pour m'aider à résoudre le problème, car j'ai déjà fait des recherches sur d'autres sites et sur d'autres forums OpenClassrooms, mais rien ne fonctionne chez moi.

    Mon IDE est code::blocks, mon compilateur minGW et je suis sous windows.

    Merci par avance.

    -
    Edité par Yixraie 22 juin 2022 à 11:47:48

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2022 à 12:58:14

      Installe une version plus récente de MinGW avec posix thread.

      Tu es certain d'avoir bien cherché? https://stackoverflow.com/questions/34847804/stdthread-works-in-cygwin-but-not-in-mingw

      -
      Edité par SpaceIn 22 juin 2022 à 13:00:45

      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2022 à 15:55:45

        Je ne comprend pas si ce que je peux installer est une version de minGW ou bien une sorte d'ajout.

        https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/

        Je suis allé là-dessus.

        EDIT : Je ne sais pas du tout comment l'installer, en tout cas quoi télécharger.

        -
        Edité par Yixraie 22 juin 2022 à 15:58:49

        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2022 à 16:35:44

          Bonjour,

          Il y a des compilateurs récents MinGW-w64 sur ce site https://www.winlibs.com .

          :)

          -
          Edité par Warren79 22 juin 2022 à 22:00:17

          • Partager sur Facebook
          • Partager sur Twitter

          Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

            22 juin 2022 à 19:58:59

            Re-bonjour !

            J'ai trouvé ceci, mais ça ne ressemble pas du tout au minGW que j'ai actuellement (excusez moi je suis débutant et avec le cours d'OpenClassrooms je crois que je n'ai pas toute les notions) comment je devrais l'installer ?

            • Partager sur Facebook
            • Partager sur Twitter
              22 juin 2022 à 20:07:00

              Sur Windows, si tu débutes, le plus simple reste d'utiliser Microsoft Visual Studio. C'est gratuit et c'est l'outil de dev fournit par Microsoft. Tu as juste a penser a bien selectionner "C++" lors de l'installation.

              MingW est un portage du compilateur GCC. C'est pas mauvais en soi, mais l'installation et configuration est parfois casse pied.

              • Partager sur Facebook
              • Partager sur Twitter
                22 juin 2022 à 20:13:29

                Merci pour la réponse mais, pour une raison que je ne peux pas citer (mais qui n'a en quelque sorte rien à voir avec la programmation) je ne préfère pas utiliser Visual Studio.

                De plus, je n'aime pas l'idée d'abandonner quelque chose car je n'y arrive pas, alors j'aimerais réussir cette installation.

                Je vais essayer de me renseigner sur l'installation.

                En tout cas, merci quand même pour votre aide et vos réponses.

                • Partager sur Facebook
                • Partager sur Twitter
                  22 juin 2022 à 20:28:09

                  J'imagine que c'est pour des raisons de "j'aime pas microsoft". Libre a toi.

                  Et il ne s'agit pas d'abandonner, mais de continuer dans un premier temps avec des choses plus accessibles, puis revenir sur ce problème quand tu auras plus l'habitude du fonctionnement des compilateurs sur Windows. Mais encore une fois, libre a toi.

                  Par contre, il faut reprendre les choses dans l'ordre. Avant de proposer de mettre à jour MingW, les autres intervenants auraient dû commencer par te demander quelle version tu utilises et où/comment tu l'as installé. Tu peux le savoir en utiliser "gcc --version" en ligne.

                  Sur ta copie d'écran, tu sembles utiliser mingw-w64. C'est une bonne chose, "mingw" n'est plus maintenu, il faut utiliser "mingw-w64". Tu sembles avoir la version 10, donc ca semble correct.

                  Le site officiel https://www.mingw-w64.org/downloads/ ne fournit pas directement les binaires, il faut donc passer par un site qui les fournis. Le plus simple est d'utiliser les sites proposés sur le site officiel de mingw-w64, par exemple MSYS2 https://www.msys2.org/. Tu as les instructions d'installation en utilisant le .exe.

                  -
                  Edité par gbdivers 22 juin 2022 à 20:29:26

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juin 2022 à 21:45:24

                    Et, dans le pire des cas, il est toujours possible d'installer MSYS2 (un émulateur d'un système linux, en fait) dont la chaine de compilation peut sans problème s'utiliser sous windows ;)

                    l'énorme avantage étant qu'il vient avec tout son ensemble de paquets, et donc de bibliothèques externes qui pourrait t'intéresser ;)

                    • 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
                      23 juin 2022 à 4:03:42

                      @Yixraie:
                      Je ne sais pas pourquoi tu ne veux pas utiliser Visual Studio ...
                      Il me semble que MinGW-W64 peut être appelé en invite de commande sous cmd.
                      Je le faisais, mais j'avais la version 8.3 de sourceforge, pas l'idéal.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                        23 juin 2022 à 9:00:12

                        gbdivers a écrit:

                        Par contre, il faut reprendre les choses dans l'ordre. Avant de proposer de mettre à jour MingW, les autres intervenants auraient dû commencer par te demander quelle version tu utilises et où/comment tu l'as installé. Tu peux le savoir en utiliser "gcc --version" en ligne.

                        Sur ta copie d'écran, tu sembles utiliser mingw-w64. C'est une bonne chose, "mingw" n'est plus maintenu, il faut utiliser "mingw-w64". Tu sembles avoir la version 10, donc ca semble correct.


                        Le truc c'est de ne pas prendre la version avec les threads win32, car non compatibles avec la librairie thread à ma connaissance.

                        L'op, tu as téléchargé le code source de MinGW, récupère plutôt un binaire sur https://winlibs.com/ comme indiqué précédemment (https://github.com/brechtsanders/winlibs_mingw/releases/download/12.1.0-14.0.4-10.0.0-msvcrt-r2/winlibs-x86_64-posix-seh-gcc-12.1.0-mingw-w64msvcrt-10.0.0-r2.7z par exemple).

                        Sinon tu peux installer msys2 et passer par pacman, c'est un petit peu plus compliqué.

                        -
                        Edité par SpaceIn 23 juin 2022 à 9:01:32

                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 juin 2022 à 9:24:49

                          gbdivers a écrit:

                          J'imagine que c'est pour des raisons de "j'aime pas microsoft". Libre a toi.

                          Ce qui en soit serait assez culotté, étant sous Windows pour le coup.

                          @Yixraie, je t'invite à passer via msys2 si tu veux un toolchain MinGW récent avec un gestionnaire de paquets décent. En plus il y a un toolchain clang fourni (qui est à des années lumières devant GCC).

                          -
                          Edité par markand 23 juin 2022 à 10:01:06

                          • Partager sur Facebook
                          • Partager sur Twitter

                          l'azerty est aux dispositions ce que subversion est aux SCM

                            25 juin 2022 à 18:32:52

                            Bonjour !

                            Merci beaucoup à tous ! Je retiendrais ce que vous m'avez proposés si j'en ai besoin !

                            L'installer mingw-64 n'a pas fonctionné et a retourné une erreur, mais sur source forge j'ai trouvé un zip dudit mingw-64 et je l'ai intégré à mon IDE après l'avoir décompressé.

                            Grâce à ça, les threads marchent désormais à merveille !

                            Merci encore à vous tous, je passerai le sujet en résolu dans 2 jours si jamais vous voulez m'avertir que ma solution n'est pas bonne.

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Problème de threads en c++.

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown