On Monday, January 16, 2017 at 12:20:09 PM UTC-5, Andrew Marlow wrote: > > I am trying to move to version 565 and am finding several problems with > missing symbols. I find this on Solaris 11, RHEL 6.8 and Windows 7. This > issue report concentrates on Windows 7. I am using the Visual Studio 2015 > compiler, update 3. > > My app fails to link because it fails to find various symbols from > base64.cpp. The symbols were: > > public: virtual void __cdecl > CryptoPP::Base64Encoder::IsolatedInitialize(class CryptoPP::NameValuePairs > const &) > virtual void __cdecl CryptoPP::Base64Decoder::IsolatedInitialize(class > CryptoPP::NameValuePairs const &) > static int const * __cdecl > CryptoPP::Base64Decoder::GetDecodingLookupArray(void) > > On examining the solution I see this file has been omitted! Adding > base64.cpp to the solution and rebuilding didn't make this error go away. > Looking at the code I see this is because the class is not decorated with > the usual Microsoft guff that would export all the public functions in the > class. >
Right. The Base64Encoder is not part of the FIPS DLL. The FIPS DLL only includes the core FIPS 140-2 algorithms. Also see https://www.cryptopp.com/wiki/FIPS_DLL. > This looks like a regression to me because our code has not changed in > this area and this worked on version 563 of cryptopp. Sure enough on > looking at the header file version 563 is decorated with CRYPTOPP_DLL. > With the encoder and decoder classes suitably hacked in 565 my app links ok. > Intersting. I just checked Crypto++ 5.6.2, and the Base64Encoder and Base64Decoder lack the symbol: https://github.com/weidai11/cryptopp/blob/789f81f048c9bc472c7e7596f49b02eadd6fc1fd/base64.h . Perhaps someone modified your local copy of the source files. Some minor points:- > > On converting cryptdll.vcxproj to VC14 I see: Command line warning D9002: > ignoring unknown option '/arch:SSE2'. This is just a slight wrinkle. > Yeah, that's a Microsoft bug. Its needed for VS2008 and VS2010 (IIRC), and then later Microsoft compilers produce a warning. Also see https://connect.microsoft.com/VisualStudio/feedback/details/1217151/command-line-warning-d9002-ignoring-unknown-option-arch-sse2 . It would help if the vcxproj filenames incorporated something like vc10 or > vc14 to indicate to the reader which version of Visual Studio they are for. > The Visual Studio project files are VS2010. The debug artifacts do not get a D put on the end of the name like they > used to. > Hmmm... Searching for 'cryptlibd' in the Crypto++ 5.6.2 project file does not hit. Also see https://github.com/weidai11/cryptopp/blob/789f81f048c9bc472c7e7596f49b02eadd6fc1fd/cryptlib.vcproj. Perhaps someone modified your local copy of the project files. Jeff -- -- 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. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
