Lorsque je compile sur VS 2008 en mode deubg, tout fonctionne correctement. Lorsque je compile la même chose en mode release, tout ne fonctionne pas. Autant que je sache, les répertoires d'inclusion sont les mêmes et il n'y a pas de symboles de préprocesseur supplémentaires.Erreur lors de la compilation en mode édition mais pas en mode débogage
Une aide?
1> zlib.cpp 1> C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ include \ xutility (419): erreur C2664: « cryptopp :: AllocatorWithCleanup :: AllocatorWithCleanup (const & cryptopp :: AllocatorWithCleanup) » : ne peut pas convertir le paramètre 1 de 'cryptopp :: AllocatorWithCleanup' à 'const cryptopp :: AllocatorWithCleanup &' 1> avec 1> [1>
T = std: : _Aux_cont 1>] 1>
et 1> [1>
T = cryptopp :: HuffmanDecoder :: CodeInfo 1>] 1> et 1> [1 > T = std :: _ Aux_cont 1>
] 1> Raison: ne peut pas convertir de 'cryptopp :: AllocatorWithCleanup' à 'const cryptopp :: AllocatorWithCleanup' 1> avec 1> [1>
T = cryptopp :: :: HuffmanDecoder CodeInfo 1>] 1> 1 et> [ 1> T = std :: _ Aux_cont 1>
] 1> Aucun opérateur de conversion définie par l'utilisateur disponible qui peut effectuer cette conversion, ou le o pérateur ne peut pas être appelé 1> C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ include \ xutility (417): lors de la compilation membre du modèle de classe fonction « std :: _ Container_base_aux_alloc_real < _Alloc> :: _Container_base_aux_alloc_real (_Alloc) » 1> avec 1> [1>
_Alloc = cryptopp :: AllocatorWithCleanup 1>] 1> C: \ Program Files (x86) \ Microsoft Visual studio 9.0 \ VC \ include \ vecteur (421): voir référence au modèle de classe instantiation 'std :: _ Container_base_aux_alloc_real < _Alloc>' en cours de compilation 1> avec 1>
[1>
_Alloc = cryptopp :: AllocatorWithCleanup 1>] 1> C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ include \ vecteur (439): voir référence au modèle de classe instanciation 'std :: _ Vector_val < _Ty, _Alloc>' étant compilé 1> avec 1> [1> = _Ty cryptopp :: :: HuffmanDecoder CodeInfo, 1>
_Alloc = cryptopp :: AllocatorWithCleanup 1>] 1>
C: \ monprojet \ sshlib \ zinflate.h (79): voir référence à modèle de classe d'instanciation 'std :: vecteur < _Ty, _Ax>' compilé 1> avec 1>
[1>
_Ty = cryptopp :: :: HuffmanDecoder CodeInfo, 1>
_Ax = cryptopp :: AllocatorWithCleanup 1>] 1> zinflate.cpp
La ligne de code il pointe finalement est:
std::vector<CodeInfo, AllocatorWithCleanup<CodeInfo> > m_codeToValue;
Modifier: Plus d'informations:
Je reçois cette erreur exactement lorsque mon préprocesseur contient NDEBUG au lieu de _DEBUG. Si je change ma config release pour avoir _DEBUG isntead compile. Pourquoi?
Cela ressemble à un problème de constance avec le paramètre allocator sur votre vecteur. Avez-vous plus de code? –
#defining '_DEBUG' bascule fondamentalement le mode de construction en mode débogage. La stratégie d'allocation personnalisée de Microsoft STL est différente en mode de débogage et n'est pas affectée par le bogue. Voir le lien Nabble dans ma réponse ci-dessous. –