2010-08-05 25 views
15

Estoy usando GCC 4.5.0 con el Eclipse IDE (si eso importa) en Windows a través de MinGW.GCC std :: thread no encontrado en el espacio de nombres std

Estoy usando la bandera -std=c++0x.

encuentro que _GLIBCXX_HAS_GTHREADS todavía no está definido, por lo thread para mí todavía no es miembro del espacio de nombres std. - o tal vez es algo más.

¿Qué se puede hacer para obtener compatibilidad con C++ 11 threading con GCC?

P.S. No reconoce la bandera -pthread. Leí en una pregunta en otro lugar de este sitio que esto funciona.

Edit: Stupid me: pthread es una biblioteca, no es una opción. Está instalado, gcc puede encontrar el encabezado, pero todavía no hay cigarro.

+0

Usted está incluyendo '', ¿verdad? –

+0

Sí, ¿cómo más encontré esa macro? Editar: revisado nuevamente. Definitivamente lo estoy incluyendo. Todavía se queja de que "thread" no es miembro de std. – defube

+0

Ver [la respuesta] (http://stackoverflow.com/a/5931181/723845) – Loom

Respuesta

10

Funciona bien en Linux (g++ -std=c++0x -lpthread sin definiciones adicionales).

Sin embargo, this thread on Cygwin mailing list sugiere que, al menos a partir de 4.4, _GLIBCXX_HAS_GTHREADS fue deshabilitada por una prueba autoconf cuando la construcción de libstdC++ porque la implementación de pthread cygwin falta pthread_mutex_timedlock. Quizás MinGW tiene el mismo problema.

También, this thread on comp.lang.c++.moderated dice lo mismo. No es compatible con la biblioteca.

3

¿Qué se puede hacer para obtener compatibilidad con Threading C++ 0x con GCC?

¿Usar Boost? En serio, http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html los hilos de las reclamaciones no están completos, incluso en el encabezado principal, por lo que no estará en ninguna versión actual.

+0

Sí, sé sobre el impulso y no me importa usarlo. También sé que el soporte de gcc para C++ 0x es actualmente experimental. Tenía curiosidad de por qué no funcionaba con la mía cuando funcionaba con versiones aparentemente más antiguas (que he intentado, y aún así recibo el mismo mensaje). – defube

2

Las versiones nativas de Windows de gcc no admiten la nueva biblioteca de hilos C++ 0x/C++ 11.

La biblioteca (comercial) Just::Thread agrega soporte para el puerto TDM de gcc 4.5.2 para Windows, así como para MSVC.

+0

estás equivocado;) – niXman

2

Ya existe una biblioteca sólo de encabezado de peso ligero que implementa primitivas std :: hilo y sincronización en la API de Win32: https://github.com/meganz/mingw-std-threads

que debería funcionar con cualquier versión de MinGW que tiene soporte adecuado para C++ 11.

Cuestiones relacionadas