2010-09-14 7 views
11

J'utilise des blocs de code avec MinGW et j'essaie de compiler un programme simple avec une liaison statique. J'ai construit les bibliothèques Boost en utilisant these directions. Tout a bien fonctionné et j'ai réussi à compiler ce programme simple (il compile, je sais que ça ne marche pas car il se ferme avant que le message ne soit envoyé à la console, mais je veux juste le compiler). Si j'ai une DLL dans mes bibliothèques de liens, elle compile bien, mais quand je la change avec les bibliothèques statiques .a du même contenu, j'obtiens des références indéfinies comme "référence non définie à` _imp ___ ZN5boost6threadD1Ev '| ".Blocs de code, MinGW, Boost et problèmes de liaison statique

Je n'ai aucune idée de ce qu'est le problème et je ne trouve pas la solution. Je pense que cela pourrait avoir à voir avec les paramètres de l'éditeur de liens, mais je ne peux pas trouver d'informations sur la façon de les changer. Je serais extrêmement reconnaissant pour toute aide qui pourrait être fournie.

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

} 

Répondre

10

Il s'agit d'essayer de lier de manière statique lorsque les en-têtes sont configurés pour un lien dynamique. Je l'explique pour libssh dans this question. Piquer autour de boost/thread/detail/config.hpp me fait penser que vous devriez #define BOOST_THREAD_USE_LIB, ou utiliser le drapeau -D pour faire la même chose.

Questions connexes