2011-05-23 15 views
10

mediante Visual Studio 2008 y aumentar Bibliotecas 1.46.1 quiero compilar y enlazar el siguiente con la bandera/CLR:Hilos impulso con CLR

#include <boost/thread/thread.hpp> 
void run() {} 
int main(int argc, char *argv[]) 
{ 
    boost::thread t(run); 
} 

El primer error es de aproximadamente un maniquí-estructura-forward declarada en impulso :: hilo. This post trabajos en torno a esta declarando:

namespace boost { 
    struct thread::dummy {}; 
} 

Claro, ahora puede compilar, pero luego me sale el aviso enlazador

LNK4248 de advertencia de alerta 1: token typeref sin resolver (0100001F) para 'boost.detail .win32._SECURITY_ATTRIBUTES '; la imagen no se puede ejecutar

Ejecución de los resultados de la aplicación en

La aplicación no pudo iniciar correctamente (0xc000007b).

Ninguna de las sugerencias en el hilo del foro mencionado anteriormente funciona para mí. Construí una versión estática de la lib de Boost Threads, y funciona bien sin el indicador/CLR. Depurar/liberar no hace diferencia. Me estoy ejecutando bajo Win7 de 32 bits.

¿Alguna pista?

+1

posible duplicado de [alzar problemas mutex C++/CLI] (http://stackoverflow.com/q/5670248/636019) – ildjarn

+0

@ildjarn: ¿cómo es eso? Este es un error del enlazador. El hilo enlazado es un error de tiempo de ejecución. –

+0

@Matt: "* La aplicación no pudo iniciarse correctamente (0xc000007b). *" Me parece un error de tiempo de ejecución. – ildjarn

Respuesta

3

Ya me encontré con este problema, no recuerdo de dónde lo saqué, pero una solución alternativa es declarar "boost.detail.win32._SECURITY_ATTRIBUTES" después de incluir todos los encabezados de impulso como tal.

namespace boost { 
    namespace detail { 
     namespace win32 { 
      struct _SECURITY_ATTRIBUTES: public ::_SECURITY_ATTRIBUTES {}; 
     }; 
    }; 
}; 

Elimine los espacios de nombres si desea que todos lo vean.

+0

¡Bingo! aquí está el hilo original http://lists.boost.org/threads-devel/2009/10/0502.php – namar0x0309