Когда я компилирую на 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> с 1> [1>
T = std :: _ Aux_cont 1>] 1>
и 1> [1>
Т = CryptoPP :: HuffmanDecoder :: CodeInfo
1>] 1> и 1> [
1> T = std :: _ Aux_cont 1>
] 1> Причина: невозможно конвертировать
от
'CryptoPP :: AllocatorWithCleanup' для
«Const
CryptoPP :: AllocatorWithCleanup '1>
с 1> [1>
Т = CryptoPP :: HuffmanDecoder :: CodeInfo
1>] 1> и 1> [
1> T = std :: _ Aux_cont 1>
] 1> Нет пользовательского преобразования
оператор, который может выполнять
это преобразование или оператор
нельзя назвать 1> C: \ Program
Файлы (x86) \ Microsoft Visual Studio
9.0 \ VC \ include \ xutility (417): при компиляции члена шаблона класса
функция
'Станд :: _ 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): см. Ссылку на шаблон класса
конкретизации
'Станд :: _ 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 (439): см. Ссылку на шаблон класса
конкретизации
'std :: _ Vector_val <_Ty, _Alloc>' существо
скомпилировано 1> с 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 вместо нее, она компилировалась. Почему?