J'ai suivi l'instruction ici sur la configuration de la configuration de codeBLOCKS pour utiliser GCC 4.7.1 .L'ontillage fourni à la page I mentionné est bien compilé, mais lorsque j'ai essayé de compiler le code suivant, il a généré les erreurs après.Je Doit dire que j'ai même réglé le drapeau Compilit C ++ 11 via les paramètres du compilateur (-STD = C ++ 11) mais toujours pas de chance. Code qui ne compile pas:
main.cpp||In function 'int main()':| main.cpp|13|error: 'thread' is not a member of 'std'| main.cpp|13|error: 'thread' is not a member of 'std'| main.cpp|13|error: template argument 1 is invalid| main.cpp|13|error: template argument 2 is invalid| main.cpp|13|error: invalid type in declaration before ';' token| main.cpp|19|error: request for member 'push_back' in 'th', which is of non-class type 'int'| main.cpp|19|error: 'thread' is not a member of 'std'| main.cpp|23|error: no matching function for call to 'begin(int&)'| main.cpp|23|note: candidates are:| \include\c++\4.7.1\initializer_list|89|note: template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)| \include\c++\4.7.1\initializer_list|89|note: template argument deduction/substitution failed:| main.cpp|23|note: mismatched types 'std::initializer_list<_Tp>' and 'int'| \include\c++\4.7.1\bits\range_access.h|87|note: template<class _Tp, unsigned int _Nm> _Tp* std::begin(_Tp (&)[_Nm])| \include\c++\4.7.1\bits\range_access.h|87|note: template argument deduction/substitution failed:| main.cpp|23|note: mismatched types '_Tp [_Nm]' and 'int'| \include\c++\4.7.1\bits\range_access.h|58|note: template<class _Container> decltype (__cont.begin()) std::begin(const _Container&)| \include\c++\4.7.1\bits\range_access.h|58|note: template argument deduction/substitution failed:| main.cpp|23|required from here| \include\c++\4.7.1\bits\range_access.h|58|error: request for member 'begin' in '__cont', which is of non-class type 'const int'| \include\c++\4.7.1\bits\range_access.h|48|note: template<class _Container> decltype (__cont.begin()) std::begin(_Container&)| \include\c++\4.7.1\bits\range_access.h|48|note: template argument deduction/substitution failed:| main.cpp|23|required from here| \include\c++\4.7.1\bits\range_access.h|48|error: request for member 'begin' in '__cont', which is of non-class type 'int'| main.cpp|23|error: no matching function for call to 'end(int&)'| main.cpp|23|note: candidates are:| \include\c++\4.7.1\initializer_list|99|note: template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)| \include\c++\4.7.1\initializer_list|99|note: template argument deduction/substitution failed:| main.cpp|23|note: mismatched types 'std::initializer_list<_Tp>' and 'int'| \include\c++\4.7.1\bits\range_access.h|97|note: template<class _Tp, unsigned int _Nm> _Tp* std::end(_Tp (&)[_Nm])| \include\c++\4.7.1\bits\range_access.h|97|note: template argument deduction/substitution failed:| main.cpp|23|note: mismatched types '_Tp [_Nm]' and 'int'| \include\c++\4.7.1\bits\range_access.h|78|note: template<class _Container> decltype (__cont.end()) std::end(const _Container&)| \include\c++\4.7.1\bits\range_access.h|78|note: template argument deduction/substitution failed:| main.cpp|23|required from here| \include\c++\4.7.1\bits\range_access.h|78|error: request for member 'end' in '__cont', which is of non-class type 'const int'| \include\c++\4.7.1\bits\range_access.h|68|note: template<class _Container> decltype (__cont.end()) std::end(_Container&)| \include\c++\4.7.1\bits\range_access.h|68|note: template argument deduction/substitution failed:| main.cpp|23|required from here| \include\c++\4.7.1\bits\range_access.h|68|error: request for member 'end' in '__cont', which is of non-class type 'int'| main.cpp|23|error: unable to deduce 'auto&' from '<expression error>'| ||=== Build finished: 14 errors, 4 warnings (0 minutes, 6 seconds) ===|
3 Réponses :
avec MINGW, le support de thread de GCC dépend de la construction que vous obtenez. Certaines constructions ne soutiennent pas les threads, d'autres. P>
Je crois que la construction Mingw à http://code.google.com / p / mingw-builds / téléchargements / liste prend en charge les threads. P>
Que vous mais lequel dois-je télécharger? I686 versions ou x86-x64? J'utilise des fenêtres 32bits au fait.
@Hossein: Ensuite, obtenez I686. L'autre est 64 bits.
Project Mingw-Builds a été déplacé sur sourceforge.net/projects/mingwbuilds/files/windows-host ici Vous pouvez trouver des versions de Newst de Mingw
@Anthonywilliams: Merci beaucoup, j'ai fait comme on m'a dit et tout va bien;)
MINGW ne compilera tout simplement pas avec '-Std = c ++ 0x'. Assez étrange, '-std = gnu ++ 0x' fonctionne. P>
Essayez Mingw Builds: P>
http://sourceforge.net/projects/mingwbuilds/ p>
Ce programme d'installation vous permettra de choisir quel que soit MINGW que vous souhaitez et inclut également C ++ 11 code> FLIENTALITÉ. P>
Sur Unix oui, mais avec Mingw sous Windows no.
Exactement. GCC probablement implémenté
std :: thread code> sur
pthread code> S, ce qui signifie qu'ils ne fonctionnent pas sur les threads Windows Win32. Obtenez un système UNIX.
Oui, sur Linux, il s'appuie sur Pthread. BTW Cela signifie que, sur Linux, vous devez également ajouter un indicateur de liaison
-LPTthread code> à la ligne de commande. Sinon, il sera compilé, mais ne liez pas ou ne produisez pas d'erreurs de temps d'exécution.
@Jogojapan Je pense qu'il est recommandé d'utiliser l'option
-pthread code>, au moins sur Linux.
@juanchopanza Vous voulez dire que c'est recommandé, mais pas nécessaire? Désolé, je ne comprends pas comment votre déclaration est différente de la mienne. (J'ai fait cette déclaration parce que cela n'a pas été mentionné dans les drapeaux du compilateur que l'OP a donné, ce qui pourrait induire les autres personnes, qui utilisent des threads sur Linux plutôt que Mingw / Windows.)
@jogojapan
-pthread code> a fait plus que le lien de liberbthead, mais je ne me souviens pas maintenant de quoi exactement "plus".
@juanchopanza ah. J'ai compris.
-Pthread code> plutôt que
-LPThread code>. Oui, tu as raison. J'aurais dû dire
-pthread code>.
@ Jogojapan, @ Juanchopanza: Il existe une pertinence donc question .