Thanks for your answer.
The problem then should be #1, but which path exactly do I have to add
to the dependencies?

On 24 Dez., 21:03, user923005 <[email protected]> wrote:
> On Dec 24, 5:26 am, Stingrey <[email protected]> wrote:
>
>
>
> > I tryed to write a simple hash programm that just reads a file and
> > then calculates a tiger hash of it.
> > While compiling I get the following errors:
>
> > 1>hash_tiger.obj : error LNK2001: Nicht aufgelöstes externes Symbol
> > ""public: virtual void __cdecl CryptoPP::IteratedHashBase<unsigned
> > __int64,class CryptoPP::HashTransformation>::Update(unsigned char
> > const *,unsigned __int64)" (?upd...@?
> > $iteratedhashb...@_kvhashtransformation@CryptoPP@@@CryptoPP@@ueaaxpeb...@z)­".
> > 1>hash_tiger.obj : error LNK2001: Nicht aufgelöstes externes Symbol
> > ""public: virtual unsigned char * __cdecl
> > CryptoPP::IteratedHashBase<unsigned __int64,class
> > CryptoPP::HashTransformation>::CreateUpdateSpace(unsigned __int64
> > &)" (?createupdatesp...@?
> > $iteratedhashb...@_kvhashtransformation@CryptoPP@@@CryptoPP@@ueaapeaeae...@­z)".
> > 1>hash_tiger.obj : error LNK2001: Nicht aufgelöstes externes Symbol
> > ""public: virtual void __cdecl CryptoPP::IteratedHashBase<unsigned
> > __int64,class CryptoPP::HashTransformation>::Restart(void)" (?rest...@?
> > $iteratedhashb...@_kvhashtransformation@CryptoPP@@@CryptoPP@@UEAAXXZ)".
> > 1>hash_tiger.obj : error LNK2001: Nicht aufgelöstes externes Symbol
> > ""public: virtual void __cdecl CryptoPP::Tiger::TruncatedFinal
> > (unsigned char *,unsigned __int64)" (?
> > truncatedfi...@tiger@CryptoPP@@ueaaxpea...@z)".
> > 1>hash_tiger.obj : error LNK2001: Nicht aufgelöstes externes Symbol
> > ""public: virtual bool __cdecl
> > CryptoPP::HashTransformation::TruncatedVerify(unsigned char const
> > *,unsigned __int64)" (?
> > truncatedver...@hashtransformation@CryptoPP@@ueaa_npeb...@z)".
> > 1>hash_tiger.obj : error LNK2001: Nicht aufgelöstes externes Symbol
> > ""protected: virtual unsigned __int64 __cdecl
> > CryptoPP::IteratedHashBase<unsigned __int64,class
> > CryptoPP::HashTransformation>::HashMultipleBlocks(unsigned __int64
> > const *,unsigned __int64)" (?hashmultipleblo...@?
> > $iteratedhashb...@_kvhashtransformation@CryptoPP@@@CryptoPP@@meaa_kpeb_...@­z)".
> > 1>hash_tiger.obj : error LNK2019: Verweis auf nicht aufgelöstes
> > externes Symbol ""public: static void __cdecl
> > CryptoPP::Tiger::Transform(unsigned __int64 *,unsigned __int64 const
> > *)" (?transf...@tiger@CryptoPP@@saxpea_kpe...@z)" in Funktion
> > ""protected: virtual void __cdecl
> > CryptoPP::IteratedHashWithStaticTransform<unsigned __int64,struct
> > CryptoPP::EnumToType<enum CryptoPP::ByteOrder,0>,64,24,class
> > CryptoPP::Tiger,0>::HashEndianCorrectedBlock(unsigned __int64 const
> > *)" (?hashendiancorrectedbl...@?$iteratedhashwithstatictransform@_KU?
> > $enumtot...@w4byteorder@CryptoPP@@$0A@@CryptoPP@@$...@$0bi@vti...@2@
> > $0A@@CryptoPP@@meaaxpe...@z)".
> > 1>hash_tiger.obj : error LNK2019: Verweis auf nicht aufgelöstes
> > externes Symbol ""public: static void __cdecl
> > CryptoPP::Tiger::InitState(unsigned __int64 *)" (?
> > initst...@tiger@CryptoPP@@saxpe...@z)" in Funktion ""protected:
> > virtual void __cdecl
> > CryptoPP::IteratedHashWithStaticTransform<unsigned __int64,struct
> > CryptoPP::EnumToType<enum CryptoPP::ByteOrder,0>,64,24,class
> > CryptoPP::Tiger,0>::Init(void)" (?i...@?
> > $iteratedhashwithstatictransf...@_ku?$enumtotype@w4byteor...@cryptopp@@
> > $0A@@CryptoPP@@$...@$0bi@vti...@2@$0A@@CryptoPP@@MEAAXXZ)".
> > 1>hash_tiger.obj : error LNK2019: Verweis auf nicht aufgelöstes
> > externes Symbol ""public: __cdecl CryptoPP::Algorithm::Algorithm
> > (bool)" (??0algori...@cryptopp@@q...@_n@Z)" in Funktion ""public:
> > __cdecl CryptoPP::HashTransformation::HashTransformation(void)" (??
> > 0hashtransformat...@cryptopp@@q...@xz)".
>
> > Here is the code of my Programm if it helps:
>
> > // hash_tiger.cpp : Definiert den Einstiegspunkt für die
> > Konsolenanwendung.
> > //
>
> > #include <iostream>
> > #include <fstream>
>
> > #include "stdafx.h"
> > #include "..\Crypto\tiger.h"
>
> > using namespace std;
> > using namespace CryptoPP;
>
> > ifstream::pos_type size;
> > byte * pbData;
>
> > int _tmain(int argc, char *argv[])
> > {
> >         string filename = "C:\temp.dat";
>
> >         ifstream dat_ein;
> >         byte abDigest[Tiger::DIGESTSIZE];
>
> >         /*
> >         if(argc > 1)
> >                 filename = argv[1];
> >         else
> >         {
> >                 cerr << "Wrong paramter!";
> >                 return 1;
> >         }
> >         */
>
> >         /* File input */
> >         dat_ein.open(filename.c_str(), ios::in | ios::binary | ios::ate);   
> >     //
> > open file for binary input with pointer at end of file
> >         if(!dat_ein)
> >         {
> >                 cerr << "Error with file!";
> >                 return 1;
> >         }
>
> >         size = dat_ein.tellg();                 // get the size of the file
> >         pbData = new byte [size];               // allocation of memory
>
> >         dat_ein.seekg (0, ios::beg);    // set pointer to beginning of file
> >         dat_ein.read((char *) &pbData, size);       // read whole file at 
> > once
> >         dat_ein.close();                                // close file
>
> >         /* Crypto++ */
> >         Tiger thash;
> >         thash.CalculateDigest(abDigest, pbData, size);
>
> >         cout << "Hash for file = " << abDigest;
> >         return 0;
>
> > }
>
> > If somebody knows where the error lies, I would be very thankful.
>
> The errors are for unresolved externals.
> That means that the crypto library symbols were not found.
> There are two possible explanations:
> 1.  You did not add a dependency for the crypto++ library project and
> so the linker did not know where to find the symbols.
> 2.  You compiled the crypto++ library with different options and so
> the signatures of the name mangled functions are not the same.
>
> If the problem is #1, then add a project dependency.
> If the problem is #2, then change the compilation so that the
> following are true:
> A.  The character model is the same (e.g. Unicode verses Multibyte
> verses char under: Configuation Properties/General/Character Set)
> B.  The linking model is the same: Configuation Properties/C++/Code
> Generation/Runtime Library
> C.  The calling convention is the same: Configuation Properties/C++/
> Advanced/Calling convention
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---

Reply via email to