VS 2008 で deubg モードでコンパイルすると、すべて正常に動作します。リリース モードで同じものをコンパイルすると、すべてが機能するわけではありません。私が知る限り、インクルード ディレクトリは同じであり、追加のプリプロセッサ シンボルはありません。
何か助けはありますか?
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> [ 1>
T=std::_Aux_cont 1> ] 1>
および 1> [ 1>
T=CryptoPP: :HuffmanDecoder::CodeInfo 1> ] 1> and 1> [ 1> T=std::_Aux_cont 1>
] 1> 理由: 'CryptoPP::AllocatorWithCleanup' から 'const CryptoPP::AllocatorWithCleanup' 1> に変換できません 1> > [ 1>
T=CryptoPP::HuffmanDecoder::CodeInfo 1> ] 1> および 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 <_Alloc>'コンパイル中 1> with 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> [ 1> _Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1>
C:\myproject\sshlib\zinflate.h(79) : 参照を参照クラス テンプレートのインスタンス化 'std::vector<_Ty,_Ax>' は 1>
[ 1>
_Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Ax=CryptoPP::AllocatorWithCleanup 1> ] 1>zinflate でコンパイルされます。 cpp
最終的に指すコード行は次のとおりです。
std::vector<CodeInfo, AllocatorWithCleanup<CodeInfo> > m_codeToValue;
編集:詳細:
このエラーは、プリプロセッサに _DEBUG ではなく NDEBUG が含まれている場合に発生します。リリース構成を変更して _DEBUG を無効にすると、コンパイルされます。なんで?