I am trying to use Crypto++ library in my Qt application.
Qt version is 5.3.0 Compiled with VS2013 running on Windows 8.1
Crypto++ Lib compiled with VS2013
Here is the section of my .pro file which links the lib
win32: LIBS += -L$$PWD/cryptopp562/Win32/DLL_Output/Release/ -lcryptopp
INCLUDEPATH += $$PWD/cryptopp562
DEPENDPATH += $$PWD/cryptopp562
Everything appears to be fine. However I get two issues.
I am unable to compile the debug version. I assume that this is because I have release version of .lib file
When I try to compile my application, I get the following errors
crypto.obj:-1: error: LNK2019: unresolved external symbol "class std::basic_string,class std::allocator > const CryptoPP::DEFAULT_CHANNEL" (?DEFAULT_CHANNEL@CryptoPP@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@B) referenced in function "public: virtual bool __thiscall CryptoPP::Unflushable::Flush(bool,int,bool)" (?Flush@?$Unflushable@VFilter@CryptoPP@@@CryptoPP@@UAE_N_NH0@Z)
I get two such errors and I assume that this is due to two functions which calls the lib which are not getting compiled.
Edit
My observations:
It seems like I am linking to correct static lib, i.e. libcrypt.lib and I have used dumpbin utility to ensure that the missing symbols specified by the error are there in the lib file.
It appears that though I am specifying in the .pro file, some how the lib is not being referenced by the project. I have put the following line in my .pro file to reference to static lib
win32: LIBS += -L$$PWD/cryptopp562/Win32/Output/Release/ -lcryptlib
INCLUDEPATH += $$PWD/cryptopp562 DEPENDPATH += $$PWD/cryptopp562
win32:!win32-g++ PRE_TARGETDEPS += $$PWD/cryptopp562/Win32/Output/Release/cryptlib.lib else:win32-g++: PRE_TARGETDEPS += $$PWD/cryptopp562/Win32/Output/Release/libcryptlib.a
My question is,
What mistake I am making ?
What is the correct way to link the Crypto++ lib to Qt project.