У меня такая же ошибка как Crypto ++ выдаёт ошибку компилятора в algparam.h при компиляции игры с использованием Crypto ++. Ошибка:
Error C2061: syntax error : identifier 'buffer' (at line 397)
Вот код Он начинается на линии 390 и заканчивается на линии 411.
#if defined(DEBUG_NEW) && (_MSC_VER >= 1300)
# pragma push_macro("new")
# undef new
#endif
void MoveInto(void *buffer) const
{
AlgorithmParametersTemplate<T>* p = new(buffer) AlgorithmParametersTemplate<T>(*this);
CRYPTOPP_UNUSED(p); // silence warning
}
#if defined(DEBUG_NEW) && (_MSC_VER >= 1300)
# pragma pop_macro("new")
#endif
protected:
T m_value;
};
CRYPTOPP_DLL_TEMPLATE_CLASS AlgorithmParametersTemplate<bool>;
CRYPTOPP_DLL_TEMPLATE_CLASS AlgorithmParametersTemplate<int>;
CRYPTOPP_DLL_TEMPLATE_CLASS AlgorithmParametersTemplate<ConstByteArrayParameter>;
В чем проблема и как ее исправить?
Вот библиотеки, которые я использую:
Вот сообщение об ошибке:
1>c:\local\cryptopp\algparam.h(397): error C2061: syntax error: identifier 'buffer'
1>c:\local\cryptopp\algparam.h(396): note: while compiling class template member function 'void CryptoPP::AlgorithmParametersTemplate<CryptoPP::ConstByteArrayParameter>::MoveInto(void *) const'
1>c:\local\cryptopp\algparam.h(411): note: see reference to class template instantiation 'CryptoPP::AlgorithmParametersTemplate<CryptoPP::ConstByteArrayParameter>' being compiled
Вот функция, с которой у вас возникают проблемы с algparam.h
:
395 void MoveInto(void *buffer) const
396 {
397 AlgorithmParametersTemplate<T>* p = new(buffer) AlgorithmParametersTemplate<T>(*this);
398 CRYPTOPP_UNUSED(p); // silence warning
399 }
Я подозреваю, что одна из других библиотек, которую вы используете, возиться с определением на new
,
Я считаю, что вам нужно скомпилировать исходный файл, но вместо создания объектного файла, вы должны использовать либо / P (предварительная обработка в файл) или же / E (препроцесс в стандартный вывод). Как только файл обработан, взгляните на определение new
, Оттуда вернитесь в библиотеку, которая его меняет.
В комментариях вы сказали, что вы также используете:
Временами Boost делает некоторые необычные вещи, и я подозреваю, что повышение — это проблема.
Других решений пока нет …