I have a Crypto++ linked as a static lib, when building in “development editor” configuration everything build and work fine, but when I switch into “development” only configuration I got a bunch of the following error at build time:
…includes\cryptlib.h(234): error C2039: ‘type_info’ : is not a member of ‘std’
I’m currently out of option, any help on this issue would be appreciated.
Here is the catch, in visual studio the std::type_info class seems to be declared outside of the std namespace c++ - Why is type_info declared outside namespace std? - Stack Overflow , so we need to redefine it inside std :
// at the top of the file
#ifdef WIN32
#pragma warning( push )
#pragma warning( disable: 4530 )
namespace std{
typedef type_info type_info;
}
// other includes here…
#endif
// code here…
// And at the end of the code file
#ifdef WIN32
#pragma warning( pop )
#endif
and I got no idea why this is not happening in “development editor” configuration build.
Hi DavidNSilva, to answer your question as in which file we need to redefine the type_info class, it depends on where you are including the crypto++ lib, in my case it was into the cpp code def of my custom crypto code implementation, for example in Private/ModuleX/CryptoImplX.cpp, hope this answer your question.
Oh, I actually ended up editing type_info itself from the std libraries in visual studio and it seems to have worked. Yes I am trying to ship a project with cryptoPP in it. Thanks for answering, I had removed my previous comment as I had solved it somehow. I’ll take a look at that file as I felt what I did was a bit “wrong”. Thanks again for helping out
edit: “<” not appearing
You are aware that UE4 provides some encryption APIs wrapped?
Yeah, but I wanted to use the GCM-AES cipher mode and it wasn’t available back then, don’t know if it’s still the case?