tôi có các dòng sau đây trong một tập tin khá lớn:Crypto ++ đưa ra một lỗi biên dịch trong algparam.h
#include <sha.h>
#include <hex.h>
nào, khi biên soạn, ném này lỗi biên dịch:
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> ]
Tôi khá chắc chắn tôi đang quên một cái gì đó, nhưng tôi không chắc chắn những gì. Nếu tôi không bao gồm hex.h, tôi không có bất kỳ vấn đề và tôi nhận được một băm SHA256 tốt, nhưng khi tôi bao gồm hex.h, lỗi sẽ xuất hiện.
Sửa
Trong trường hợp ai thắc mắc, từ algparam.h của Crypto ++ toolkit:
void MoveInto(void *buffer) const //<=== line 320
{
AlgorithmParametersTemplate<T>* p = new(buffer)
AlgorithmParametersTemplate<T>(*this);
}
CRYPTOPP_DLL_TEMPLATE_CLASS AlgorithmParametersTemplate<bool>; // <== line 329
Sửa: Mã liên quan Removed
Đây có phải là toàn bộ văn bản lỗi không? Có lỗi nào khác không? Có bất kỳ liên kết nào giữa mã của 'InitEngine' mà bạn trích dẫn và lỗi này không? Các văn bản lỗi không tham chiếu nó, hoặc bất cứ điều gì bên trong nó. Liệu lỗi vẫn xảy ra khi bạn nhận xét 'InitEngine' ra? –
Không, không có mã nào tham chiếu hàm 'MoveInto' này. Tuy nhiên, hex.h dường như bao gồm basecode.h, bao gồm algparam.h. Có vẻ như bất cứ khi nào algparam.h được bao gồm, nó không thành công. – Codecat
Và có, nó vẫn xảy ra nếu tôi nhận xét mã trong 'InitEngine'. – Codecat