C++11, GCC 4.8.1,Code::Blocks, de filetage, de ce qu'est un mal de tête
--EDIT
Si vous souhaitez utiliser MinGW GCC 8.4.1 et threads/mutex/futures/atomics ne pas télécharger Win32 enfile version insted télécharger la version Posix.
--EDIT
Mon installation de MinGW est comme suit:
x32-4.8.1-release-win32 (comme l'enfileur) - sjlj rev 5
J'ai déballé et correctement confirmé que MinGW GCC 4.8.1 (révision 5) est installé dans C:\MinGW\mingw32. J'ai mis en place des Blocs de Code pour rechercher la dernière et la plus grande compilateur dans le chemin d'accès correct (ce dont je suis sûr). Je peux compiler un programme normal à l'aide de #inclure iostream. Ok maintenant, quand j'essaie d'exécuter un programme à l'aide de #include fil il me donne "erreur:" fil " n'est pas un membre de 'std'".
Maintenant, voici ce que j'ai fait et ce que j'ai essayé:
Je suis à la suite d'une sorte de modèle ou tutoriel ici à cplusplus.com.
J'ai le code exactement comme il est présenté sur la page web (vers le bas).
J'ai essayé, dans les Blocs de Code, d'utiliser les drapeaux de compilation "g++ suivez le C++11 norme ISO -std=c++11".
J'ai aussi essayé le drapeau "g++ suivre les prochains C++0x norme ISO -std=c++0x"
J'ai essayé les deux en même temps et à un moment, pas de mas.
J'ai aussi essayé les commandes manuellement.
Une autre commande, j'ai essayé manuellement a été -std=gnu++11 qui a été recommandé dans le fil de l'en-tête.
--EDIT
Il semble que __cplusplus est < 201103L qui est dit (ou plutôt défini) dans le fil de l'en-tête.
Cela se produit uniquement quand je manuellement utilisation -std=c++11, pour quelque raison que C::B supprime si elle a été manuellement dit si je dois utiliser une case à cocher pour utiliser ce drapeau...
--EDIT
Mon compilateur paramètres sous la Toolchain Executables onglet sont comme suit:
Compilateur C: i686-w64-mingw32-gcc-4.8.1.exe
Compilateur C++: i686-w64-mingw32-c++.exe
De l'éditeur de liens dynamique: i686-w64-mingw32-c++.exe
De l'éditeur de liens statique: ar.exe
Debbuger: GDB/débogueur CDB: par défaut
Compilateur de ressources: windres.exe
Faire Programme: mingw32-make.exe
J'ai essayé d'utiliser d'autres fichiers exécutables dans le dossier bin et toujours pas de chance...
Je commence à me demander si GCC prend en charge le C++11 ou le filetage !?
Quelqu'un a été en mesure d'obtenir les threads de travail avec MinGW GCC, les blocs de Code ou en général?
Si oui, comment avez-vous fait? Tous les liens qui pourraient aider? Des conseils?
P. S. je sais qu'il y a d'autres façons d'enfiler comme posix ou d'autres SDK est comme SFML (j'ai essayé avec succès de thread à ce sujet). Mais je veux l'utiliser GCC threading et je suis assez perplexe quant à pourquoi il est si difficile à faire, vu que tous les fichiers nécessaires sont là...
--EDIT
J'ai constaté que quand j'ai compiler manuellement le programme à l'extérieur des Blocs de Code, je reçois toujours les mêmes erreurs, si j'utilise g++ c++ ou i686-w64-mingw32-g++/c++
voici la commande que je lance construire les fichiers:
C:\MinGW\mingw32\bin>g++.exe -D__GXX_EXPÉRIMENTALE_CXX0X__ -o0 -g3
-Wall-c -fmes sage-longueur=0 -std=c++11 -Wc++11-compat -o obj\Debug\main.o "F:\Projets C\Code Blocks\thread\main.cpp"
renvoie toujours l'erreur: "fil" n'est pas un membre de 'std'
- Ce que cela pourrait être un mauvais build? Je vais essayer d'autres révisions...
--EDIT
Je suis en utilisant le bon de MinGW comment jamais, au lieu de threads posix, je suis en utilisant Win32 threading (l'exécution de la GCC-v commande confirme que Win32 est mis en place pour le filetage). Je vais essayer de télécharger la version posix et voir si cela fonctionne, cependant, je ne veux que ce soit plus un win32 filetage de l'application. Merci!!!!
Ali, merci, j'ai essayé vos articles aider, mais il ne fonctionne toujours pas pour moi 🙁 voir mon journal de compiler les drapeaux, j'ai essayé de les faire correspondre d'aussi près que possible avec fishfoods: i686-w64-mingw32-g++.exe -Wall-g -std=c++11 -c -Wc++11-compat -D__GXX_EXPÉRIMENTALE_CXX0X__ -c "F:\Projets C\Code Blocks\thread\main.cpp" -o obj\Debug\main.o
Quelle est l'erreur que vous obtenez? Le même que celui que vous indiquez dans le titre? Pourriez-vous essayer d'ajouter -pthread pour les drapeaux du compilateur? (Fonctionne sur Linux, je n'ai aucune idée de ce qu'-pthread n'sur Windows). Si vous obtenez toujours le même message d'erreur alors l'explication la plus probable est que quelque chose a foiré sur votre machine et vous, y compris les mauvais fichiers d'en-tête. Je sais qu'il ne vous aidera pas beaucoup... Désolé. 🙁
Voici les drapeaux avec -pthread mais parce que je utiliser win32 que l'enfilage de cette opération échoue et a: i686-w64-mingw32-g++.exe -Wall-g -std=c++11 -c -std=gnu++11 -pthread -Wc++11-compat -D__GXX_EXPÉRIMENTALE_CXX0X__ -c "F:\Projets C\Code Blocks\thread\main.cpp" -o obj\Debug\main.o erreur: "fil" n'est pas un membre de 'std' Veuillez noter que je sais il dit i686...g++.exe, mais j'ai essayer tous les compilateurs c++ dans le répertoire, c'est à dire que j'ai essayé cela avec g++.exe c++.exe (il est venu avec plus d'un compilateur c++ apparemment).
OriginalL'auteur allegory | 2013-09-23
Vous devez vous connecter pour publier un commentaire.
probablement à la fin pour un answere, mais voici ce qui a fonctionné pour moi:
1. Obtenir x86_64-w64-mingw32-gcc-4.8-stdthread-win64_rubenvb.7z à partir de:
http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/gcc-4.8-experimental-stdthread/
2. L'installation d'un nouveau compilateur dans codeblocks avec
3. Définir le nouveau compilateur pour votre projet
4. Amusez-vous avec la simultanéité de c++11
Espère que fonctionne pour vous aussi, comme une alternative, vous pouvez utiliser visual studio.
OriginalL'auteur Jack10689
Je pense que vous vouliez dire, GCC 4.8.1 - la réponse est oui, il prend en charge un ensemble de C++11 fonctionnalités, y compris partielle support du multi-thread. Veuillez visiter http://gcc.gnu.org/releases.html à voir ensemble.
OriginalL'auteur Iuri Covalisin
gcc 4.8.1 est le C++11 fonctionnalité complète. Je ne peux pas parler pour les Fenêtres de mise en œuvre, mais bien sur Linux et OS X, il fonctionne comme annoncé, y compris tous les simultanéité de la fonctionnalité. Je viens de
#include <thread>
et appelg++ -std=gnu++11
et il fonctionne. Voici une minime partie de code qui compile parfaitement:Je reçois le erreur: mutex dans l'espace de noms 'std' n'est pas le nom d'un type. ** Je l'ai remarqué quand j'ai entrer manuellement **-std=c++11 les drapeaux de compilation, après j'construire le programme je reviens à les drapeaux de compilation et il n'y est pas plus. C'est le seul compilateur drapeau qu'est-ce que...
Alors je pense qu'il serait sûr de dire que soit votre compilateur mise en œuvre n'est pas vraiment 4.8.1 b) il est cassé, ou c) vous n'êtes pas en le passant quelques drapeaux qu'il attend. Sous Linux, la -pthread compilateur drapeau doit être passé donc il y a peut être un problème analogue. Si vous êtes en utilisant le courant tronc version de MinGW, vous devez vous assurer qu'il n'est, en fait, un modèle de thread associé (à la fois sur Mac et Linux gcc utilisation des threads POSIX par défaut, par exemple.)
IIRC l'option similaire pour
-pthread
sur windows est-mthread
, mais son absence devrait se cacherstd::mutex
, seulement de produire des erreurs d'édition de liens ou de code cassé.Daniel j'ai essayé -pthread (avec -std=c++11) jette toujours la même erreur. J'ai essayé -mthread (avec -std=c++11) et il n'a pas le reconnaître. peut-être -wthread? David le modèle de thread qui lui est associé est Win32 (je peux voir cela avec un gcc-v). Je préfère le garder win32 sauf si je dois absolument utiliser posix. Moi aussi, je me demande si il y a les drapeaux de compilation que je suis absent, ce qui sonne comme un vrai problème. Merci encore pour votre aide, tout le monde!
OriginalL'auteur David G
J'ai eu les mêmes problèmes, j'ai installé le lates MinGW-Construit
http://sourceforge.net/projects/mingwbuilds/files/mingw-builds-install/
et de configurer ma toolchain executables:
J'espère que cette aide.
OriginalL'auteur user2888809