Crypto ++ выдаёт ошибку компилятора в algparam.h

У меня есть следующие строки в довольно большом файле:

#include <sha.h>
#include <hex.h>

Который при компиляции выдает эту ошибку компилятора:

1>d:\work\app\tools\cryptopp\algparam.h(322): error C2061: syntax error : identifier 'buffer'
1>          d:\work\app\tools\cryptopp\algparam.h(321) : while compiling class template member function 'void CryptoPP::AlgorithmParametersTemplate<T>::MoveInto(void *) const'
1>          with
1>          [
1>              T=bool
1>          ]
1>          d:\work\app\tools\cryptopp\algparam.h(329) : see reference to class template instantiation 'CryptoPP::AlgorithmParametersTemplate<T>' being compiled
1>          with
1>          [
1>              T=bool
1>          ]

Я почти уверен, что что-то забыл, но я не уверен, что. Если я не включаю hex.h, у меня нет проблем, и я получаю хеш SHA256, но когда я включаю hex.h, появляется ошибка.

редактировать

На случай, если кто-нибудь спросит, из algparam.h из набора инструментов Crypto ++:

void MoveInto(void *buffer) const //<=== line 320
{
AlgorithmParametersTemplate<T>* p = new(buffer)
AlgorithmParametersTemplate<T>(*this);
}

CRYPTOPP_DLL_TEMPLATE_CLASS AlgorithmParametersTemplate<bool>; // <== line 329

редактировать: Удален несвязанный код

6

Решение

Я исправил проблему, временно не определив new, который был определен как макрос для дополнительного кода отладки.

#pragma push_macro("new")
#undef new
/* #includes for Crypto++ go here */
#pragma pop_macro("new")
6

Другие решения

Если вы включаете Crypto ++ в проект Visual Studio с поддержкой MFC, эта ошибка может быть вызвана следующей строкой:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

Не забудьте удалить его или закомментировать.

1

По вопросам рекламы [email protected]