6

かなり大きなファイルに次の行があります。

#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 を含めるとエラーが表示されます。

編集

疑問に思われる方のために、Crypto++ ツールキットの algparam.h から:

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

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

編集:無関係なコードを削除

4

2 に答える 2

1

MFC をサポートする Visual Studio プロジェクトに Crypto++ を含めている場合、このエラーは次の行が原因である可能性があります。

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

必ず削除するか、コメントアウトしてください。

于 2015-01-19T06:34:09.630 に答える