2010-09-14 9 views
11

Estoy usando Code Blocks con MinGW y estoy tratando de obtener un programa simple para compilar con enlaces estáticos. Construí las bibliotecas de Boost usando these directions. Todo salió bien y pude compilar este programa sencillo (compila, sé que no funciona porque sale antes de que el mensaje se envíe a la consola, pero solo quiero que se compile).Bloques de código, MinGW, Boost y problemas de enlace estático

Si tengo un archivo DLL en las bibliotecas de mi enlazador, compila bien, pero cuando lo cambio con las bibliotecas estáticas .a del mismo contenido, obtengo referencias no definidas como "referencia indefinida a` _imp ___ ZN5boost6threadD1Ev '| ".

No tengo idea de cuál es el problema y no puedo encontrar la solución. Creo que podría tener que ver con la configuración del enlazador, pero no puedo encontrar información sobre cómo cambiarla. Estaría muy agradecido por cualquier ayuda que pudiera brindarse.

#include <iostream> 
#include <boost/thread.hpp> 

void myfunction() 
{ 
    std::cout << "this is a thread" << std::endl; 
    return; 
} 

int main() 
{ 
    boost::thread mythread(&myfunction); 
    return 0; 

} 

Respuesta

10

Se trata de intentar establecer un enlace estático cuando los encabezados están configurados para un enlace dinámico. Explico esto para libssh en this question. Meterme en boost/thread/detail/config.hpp me hace pensar que debería #define BOOST_THREAD_USE_LIB, o usar la bandera -D para hacer lo mismo.