2010-09-14 9 views
11

Sto utilizzando i blocchi di codice con MinGW e sto cercando di ottenere un semplice programma da compilare con il collegamento statico. Ho creato le librerie Boost usando these directions. Tutto ha funzionato bene e sono stato in grado di compilare con successo questo semplice programma (si compila, so che non funziona perché esce prima che il messaggio venga inviato alla console, ma voglio solo che venga compilato).Problemi di blocchi di codice, MinGW, Boost e di collegamento statico

Se ho una DLL nelle librerie linker, compila bene, ma quando lo passo con le librerie statiche .a con lo stesso contenuto, ottengo riferimenti indefiniti come "riferimento non definito a` _imp ___ ZN5boost6threadD1Ev '| ".

Non ho idea di quale sia il problema e non riesco a trovare la soluzione. Penso che potrebbe avere a che fare con le impostazioni del linker ma non riesco a trovare informazioni su come cambiarle. Sarei estremamente grato per qualsiasi aiuto che potrebbe essere fornito.

#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; 

} 

risposta

10

Provoca il collegamento statico quando le intestazioni sono configurate per un collegamento dinamico. Spiego questo per libssh in this question. Girare intorno a boost/thread/detail/config.hpp mi fa pensare che dovresti #define BOOST_THREAD_USE_LIB o usare il flag -D per fare lo stesso.