2013-03-04 15 views
6

ho le seguenti righe in un file di grandi dimensioni piuttosto:Crypto ++ dando un errore del compilatore in algparam.h

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

che, una volta compilato, getta questo errore del compilatore:

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>   ] 

Sono sono sicuro che sto dimenticando qualcosa, ma non sono sicuro di cosa. Se non includo hex.h, non ho alcun problema e ottengo un hash SHA256 bene, ma quando includo hex.h, l'errore si apre.

Modifica

Nel caso qualcuno si chiede, da algparam.h di 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 

Edit: il codice non correlato Rimosso

+0

È questo l'intero testo dell'errore? Ci sono altri errori? C'è qualche collegamento tra il codice di 'InitEngine' che citi e questo errore? Il testo dell'errore non fa riferimento a esso, o qualcosa al suo interno. L'errore si verifica ancora quando commentate 'InitEngine'? –

+0

No, nessuno del codice fa riferimento a questa funzione 'MoveInto'. Tuttavia, hex.h sembra includere basecode.h, che include algparam.h. Sembra che ogni volta che algparam.h viene incluso, fallisce. – Codecat

+0

E sì, succede ancora se commento il codice in 'InitEngine'. – Codecat

risposta

6

ho risolto il problema indefiniti temporaneamente new , che è stato definito come una macro per qualche codice di debug aggiuntivo.

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

Se stai compresa Crypto ++ in un progetto di Visual Studio con il supporto di MFC, questo errore potrebbe essere causato da questa linea:

#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 

assicurarsi di rimuovere o come commento.

+0

Rimuovere le righe dalle intestazioni MFC non è una buona idea. – Codecat

+0

@AngeloGeels: quella riga non si trova nell'intestazione MFC. Viene aggiunto nei file '.cpp' generati dalla procedura guidata MFC. – c00000fd

+0

Ah, capisco - comunque, probabilmente non è una buona idea commentare se la mia risposta sopra risolve anche il problema. – Codecat

Problemi correlati