std:: erreur de thread (thread non membre de std))
j'ai compilé et installé gcc4.4 en utilisant macports.
quand j'essaie de compiler en utilisant -> g++ -G-Wall-ansi-pthread-std=C++0x main.rpc...:
#include <thread>
...
std::thread t(handle);
t.join();
....
le compilateur retourne:
cserver.cpp: In member function 'int CServer::run()':
cserver.cpp:48: error: 'thread' is not a member of 'std'
cserver.cpp:48: error: expected ';' before 't'
cserver.cpp:49: error: 't' was not declared in this scope
Mais std::cout <<...
compile bien..
quelqu'un Peut-il m'aider?
5 réponses
gcc ne supporte pas entièrement std:: thread yet:
http://gcc.gnu.org/projects/cxx0x.html
http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html
Utiliser boost:: thread dans l'intervalle.
Modifier
bien que ce qui suit compilé et exécuté très bien pour moi avec gcc 4.4.3:
#include <thread>
#include <iostream>
struct F
{
void operator() () const
{
std::cout<<"Printing from another thread"<<std::endl;
}
};
int main()
{
F f;
std::thread t(f);
t.join();
return 0;
}
Compilé avec
g++ -Wall -g -std=c++0x -pthread main.cpp
Sortie de a.out
:
Printing from another thread
Pouvez-vous fournir le code complet? Peut-être qu'il y a quelque chose d'obscur qui se cache là-dedans!--4-- > s?
Goutte -ansi, cela signifie-std=c++98, ce que vous ne voulez évidemment pas. Il provoque également macro __STRICT_ANSI__
à définir et cela peut changer le comportement des en-têtes, par exemple en désactivant le support C++0x.
j'ai eu le même problème sur windows en utilisant MinGW. J'ai trouvé des classes d'emballage pour in on github mingw-std-threads y Compris mingw.mutex.h, mingw.fil.les fichiers h dans le répertoire Global MinGW ont corrigé ce problème. Tout ce que j'avais à faire est d'inclure le fichier d'en-tête et mon code est resté le même
#include "mingw.thread.h"
...
std::thread t(handle);
...
Eh bien J'ai essayé Ubuntu avec GCC 4.4.1 et cela fonctionne comme un charme. Le problème est spécifique à Mac OS X, il suffit maintenant de savoir pourquoi...
Êtes-vous sûr d'utiliser le bon compilateur? Avez-vous gcc_select?