2010-01-15 33 views
1

Le titre est juste pour taquiner. :-) Je sais que ce n'est pas possible, mais voici mon problème.Utilisation simultanée de Boost en mode release et debug

Mon application (une DLL, en fait) utilise Boost. Il utilise également une API externe, qui utilise également Boost. L'API externe est bien sûr fournie dans un binaire de version, y compris les binaires Boost de version nécessaires.

Lorsque je compile/lie ma DLL en mode de libération, je n'ai aucun problème. Je précise que je relie mon application à Boost de manière dynamique (BOOST_ALL_DYN_LINK). En mode débogage, je ne peux pas charger ma DLL. Je ne suis pas sûr que ce soit à cause de Boost, mais je soupçonne que Windows n'aime pas travailler avec deux Boost (la release un appelée par la lib externe, et la debug appelée par mon code).

Cela fonctionnera-t-il mieux si je lier mon code de manière statique avec la version Boost?

Je ne pense pas que ce soit lié à CRT, parce que je n'ai rien dans la visionneuse d'événements. J'utilise Visual Studio 2005 SP1.

Merci.

Répondre

0

Cela fonctionnera-t-il mieux si je lier mon code de manière statique avec la version Boost?

Oui, c'est ce que j'attendais - si vous établissez un lien statique, vous obtenez un coup de pouce « copie » dans votre binaire, et aucune DLL de boost est toujours chargé pour votre propre coup de pouce a besoin .. la bibliothèque externe reliera heureux à sa sortie dlls. Cependant, cela ne fonctionnera pas si la bibliothèque externe utilise effectivement boost dans son API publique appelée par votre application! Dans ce cas, vous ne serez pas en mesure de résoudre le problème. Si vous appelez des API qui attendent des améliorations, votre build de boost doit correspondre à pour booster l'implémentation de l'API.

+0

J'avais l'intention de relier statiquement mon application de débogage à la version Boost. Votre «cependant» s'applique-t-il toujours? – Oodini

+0

Si vous liez votre application avec une version de build boost .. pourquoi ne pas utiliser le même moteur d'exécution de DLL que la bibliothèque externe? Je ne vois pas le besoin de lier statiquement alors. –

+0

Vous avez totalement raison. Mon esprit était coincé à 2 packs Boost. :-) – Oodini