当我在调试模式下在 VS 2008 上编译时,一切正常。当我在发布模式下编译相同的东西时,并非一切正常。据我所知,包含目录是相同的,并且没有额外的预处理器符号。
有什么帮助吗?
1>zlib.cpp 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(419):错误 C2664:'CryptoPP::AllocatorWithCleanup::AllocatorWithCleanup(const CryptoPP::AllocatorWithCleanup &)' : 无法将参数 1 从 'CryptoPP::AllocatorWithCleanup' 转换为 'const CryptoPP::AllocatorWithCleanup &' 1> with 1> [ 1>
T=std::_Aux_cont 1> ] 1>
and 1> [ 1>
T=CryptoPP: :HuffmanDecoder::CodeInfo 1> ] 1> 和 1> [ 1> T=std::_Aux_cont 1>
] 1> 原因:无法从 'CryptoPP::AllocatorWithCleanup' 转换为 'const CryptoPP::AllocatorWithCleanup' 1> with 1 > [ 1>
T=CryptoPP::HuffmanDecoder::CodeInfo 1> ] 1> and 1> [ 1> T=std::_Aux_cont 1>
] 1> 没有可以执行此转换的用户定义转换运算符,或者该运算符不能调用 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(417) : 在编译类模板成员函数 'std::_Container_base_aux_alloc_real<_Alloc>::_Container_base_aux_alloc_real(_Alloc)' 1> 时1> [ 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vector(421) :请参阅类模板实例化 'std::_Container_base_aux_alloc_real <_分配>'正在编译 1> 与 1>
[ 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vector(439) :请参阅类模板实例化 'std::_Vector_val<_Ty,_Alloc> ' 正在编译 1> with 1> [ 1> _Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1>
C:\myproject\sshlib\zinflate.h(79) :见参考到类模板实例化 'std::vector<_Ty,_Ax>' 正在编译 1> 1>
[ 1>
_Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Ax=CryptoPP::AllocatorWithCleanup 1> ] 1>zinflate。 cpp
它最终指向的代码行是:
std::vector<CodeInfo, AllocatorWithCleanup<CodeInfo> > m_codeToValue;
编辑:更多信息:
当我的预处理器包含 NDEBUG 而不是 _DEBUG 时,我得到了这个错误。如果我将发布配置更改为 _DEBUG 而不是它可以编译。为什么?