md5

2fast4you87

Erfahrenes Mitglied
Moin erstmal,

Habe nen problem mit crypto++ (http://www.eskimo.com/~weidai/cryptlib.html) und zwar habe ich mir
die verion Crypto++ 5.2.1 heruntergeladen und einfach mal das tutorial ausprobiert:

Code:
#include "cryptopp/md5.h"
#include "cryptopp/filters.h"
#include "cryptopp/files.h"
#include "cryptopp/hex.h"

#include <iostream>

using namespace CryptoPP;
using namespace std;

int main( int argc, char** argv )
{
  MD5 hash;
  byte buffer[2 * MD5::DIGESTSIZE]; //output size of the buffer
 
  FileSource f(argv[1], true,
                new HashFilter(hash,
                new HexEncoder(new ArraySink(buffer,2 * MD5::DIGESTSIZE))));
  cout << string((const char*)buffer,2 * MD5::DIGESTSIZE)  << endl;
  return 0;
}

Nur der compiler liefert mir 64 Fehler wo drinne steht das er nicht aufgelöster symbole in den fkt hat.

habe das Programm dann verkleinert um den Fehler auszugrenzen :

Code:
#include "cryptopp/md5.h"
#include "cryptopp/filters.h"
#include "cryptopp/files.h"
#include "cryptopp/hex.h"

#include <iostream>

using namespace CryptoPP;
using namespace std;

int main( int argc, char** argv )
{
  MD5 hash;
  
  return 0;
}

Compiler : --------------------Konfiguration: test - Win32 Debug--------------------
Kompilierung läuft...
test.cpp
Linker-Vorgang läuft...
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "protected: virtual unsigned int __thiscall CryptoPP::IteratedHashBase<unsigned int,class CryptoPP::HashTransformation>::HashMultipleBlocks(unsigned int const *,unsigned int)" (?HashMultipl
eBlocks@?$IteratedHashBase@IVHashTransformation@CryptoPP@@@CryptoPP@@MAEIPBII@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual bool __thiscall CryptoPP::HashTransformation::TruncatedVerify(unsigned char const *,unsigned int)" (?TruncatedVerify@HashTransformation@CryptoPP@@UAE_NPBEI@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual void __thiscall CryptoPP::IteratedHashBase<unsigned int,class CryptoPP::HashTransformation>::Restart(void)" (?Restart@?$IteratedHashBase@IVHashTransformation@CryptoPP@@@Cry
ptoPP@@UAEXXZ)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual unsigned char * __thiscall CryptoPP::IteratedHashBase<unsigned int,class CryptoPP::HashTransformation>::CreateUpdateSpace(unsigned int &)" (?CreateUpdateSpace@?$IteratedHas
hBase@IVHashTransformation@CryptoPP@@@CryptoPP@@UAEPAEAAI@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual void __thiscall CryptoPP::IteratedHashBase<unsigned int,class CryptoPP::HashTransformation>::Update(unsigned char const *,unsigned int)" (?Update@?$IteratedHashBase@IVHashT
ransformation@CryptoPP@@@CryptoPP@@UAEXPBEI@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static void __cdecl CryptoPP::MD5::Transform(unsigned int *,unsigned int const *)" (?Transform@MD5@CryptoPP@@SAXPAIPBI@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static void __cdecl CryptoPP::MD5::InitState(unsigned int *)" (?InitState@MD5@CryptoPP@@SAXPAI@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CryptoPP::Algorithm::Algorithm(bool)" (0Algorithm@CryptoPP@@QAE@_N@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "protected: void __thiscall CryptoPP::IteratedHashBase<unsigned int,class CryptoPP::HashTransformation>::PadLastBlock(unsigned int,unsigned char)" (?PadLastBlock@?$IteratedHashBase@IVHashTr
ansformation@CryptoPP@@@CryptoPP@@IAEXIE@Z)
test.obj : error LNK2001: Nichtaufgeloestes externes Symbol "protected: void __thiscall CryptoPP::HashTransformation::ThrowIfInvalidTruncatedSize(unsigned int)const " (?ThrowIfInvalidTruncatedSize@HashTransformation@CryptoPP@@IBEXI@Z)
Debug/test.exe : fatal error LNK1120: 10 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

test.exe - 11 Fehler, 0 Warnung(en)




Muss ich noch eine Lib datei einbinden ? oder warum funktioniert das nicht.
Würde gerne eine md5 verschl. haben !


Zur Info : WinXP VC++ 6.0

Gruß ...
 
Linker Fehler kommen meistens wenn man vergessen hat eine .lib zu linken. Ich habe Crypto++ 5.2.1 nicht auf dem PC, deswegen kann ich dir nicht sagen ob man da eine lib linken muss oder nicht.

Wenn da neben den Headern noch .cpp (bzw. .c) Dateien vorhanden sind, musst du die einfach noch in das Projekt einfügen dann sollte es gehen. Andernfalls musst du ne .lib linken.
 
Also wenn ich die klasse MD5 in meiner main aufrufe dann gibt er mir die 11 Fehler, die frage ist jetzt nur warum, ich gehe mal davon aus das es ein Linker fehler ist. Nur welche *.lib datei benötige ich denn?
 
Hi.

Hast du dir denn mal die Readme.txt Datei durchgelesen? Insbesondere den Teil über den GCC (Dev-CPP benutzt den GCC als Compiler)?

Du mußt die Crypto++ Bibliothek erst noch kompilieren bevor du es verwenden kannst. (je nachdem welche GCC Version du hast, mußt du erst noch ein Patch von der crypto++ Seite anwenden sonst kann die Bibliothek nicht erstellt werden)

Die Bibliothek die erstellt wird heißt dann libcryptopp.a. Steht aber alles in der Readme.txt - die sollte man normal lesen... :mad:

Gruß
 
deepthroat hat gesagt.:
Steht aber alles in der Readme.txt - die sollte man normal lesen... :mad:
Hi Deepthroat habe ich wohl gemacht, habe aber den Fehler entdeckt!
Und Zwar habe ich das falsche projekt ausgeführt. musste auch das Projekt für Vc++ kompelieren dann hatte ich uch die lib dateien.
 
Zurück