Hi Everyone,
We have a new release candidate available at https://www.cryptopp.com/cryptopp563rc1.zip. Here are the checksums:
$ md5sum cryptopp563rc1.zip
a33dd656de4567e02e64704b92820f9f
$ sha1sum cryptopp563rc1.zip
dd6f54fb68d4133f23dff85d0b106a1053058ad8
$ sha256sum cryptopp563rc1.zip
5628e248291a8f238f0d929d7d956fb4ccf836d65958172de11488b9cd1abc4a
RC1 performs more warning cleanup under Visual Studio.
It also clears some issues raised by Enterprise Analysis (/analyze). Finally, RC1 clears a Multiarch/Fat binary issue under OS X.
There's a diff in the ZIP describing precisely what changed from Crypto++ 5.6.2 (version 5.6.2 was SVN revision 541).
Please report any problems you encounter.
--
--
You received this message because you are subscribed to the "Crypto++ Users" Google Group.
To unsubscribe, send an email to cryptopp-user...@googlegroups.com.
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 cryptopp-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I just compiled it and was *very* impressed. The number of warnings reduced from 3.5k+ down to 5/9 :) Really good job there. Although it looks like you just suppressed them ;)We have a new release candidate available at https://www.cryptopp.com/cryptopp563rc1.zip. Here are the checksums:
$ md5sum cryptopp563rc1.zip
a33dd656de4567e02e64704b92820f9f
$ sha1sum cryptopp563rc1.zip
dd6f54fb68d4133f23dff85d0b106a1053058ad8
$ sha256sum cryptopp563rc1.zip
5628e248291a8f238f0d929d7d956fb4ccf836d65958172de11488b9cd1abc4a
RC1 performs more warning cleanup under Visual Studio.
We still don't get a clean compile on VS 2015 though.It also clears some issues raised by Enterprise Analysis (/analyze). Finally, RC1 clears a Multiarch/Fat binary issue under OS X.
There's a diff in the ZIP describing precisely what changed from Crypto++ 5.6.2 (version 5.6.2 was SVN revision 541).
Please report any problems you encounter.
We still need to clean those LNK4221s which can be done by simply adding the required line (exclude from build) to the paths in cryptlib.vcproj for all configurations of strciphr.cpp, simple.cpp, polynomi.cpp, algebra.cpp, like already done for eccrypto.cpp. It doesn't work for me doing this with an editor though so we'd have to use something like VS2005 (the least version we still support) to set the flags.
We also get a strange warning on algparam.h line 35 (C4459) "declaration of 'cryptopp_assert_35' hides global declaration", there seems to be no official MS documentation about this one though. I've no clue about to fix this one as it references StringSource and fipstest.cpp line 35 which is a CRYPTOPP_COMPILE_ASSERT.
I'm sad to have to tell you that the 64-bit builds of *all* projects except cryptlib (=cryptest, cryptopp) are broken and result in a bunch of "error LNK2001: unresolved external symbol ...". I suspect that dlltest works because it doesn't link any of the affected functions.
RC1 performs more warning cleanup under Visual Studio. It also clears some issues raised by Enterprise Analysis (/analyze). Finally, RC1 clears a Multiarch/Fat binary issue under OS X.
There's a diff in the ZIP describing precisely what changed from Crypto++ 5.6.2 (version 5.6.2 was SVN revision 541).
Please report any problems you encounter.
Please report any problems you encounter.
In filters.h, there is an "#if CRYPTOPP_MSC_VERSION" before config.h is included, so if filters.h is the first include, there is a #pragma warning(pop) at the end of the file without a #pragma warning(push).
Everything works for me. But can't https://github.com/weidai11/cryptopp/commit/a0390f1fd725e37a201cc47ba47204182ebc1ccf make it into 5.6.3? I find the Visual C++ warning about unreferenced local functions to be the most annoying one as it appears in every compilation unit including misc.h and can only be suppressed for the whole compilation unit in user code, not only for the Crypto++ headers.
| Filename | Status | Errors | Warnings | ||||||||||||
| 1 | 1 | ||||||||||||||
| |||||||||||||||
| 1 file | |||||||||||||||
what am I doing wrong?
I'm sad to have to tell you that the 64-bit builds of *all* projects except cryptlib (=cryptest, cryptopp) are broken and result in a bunch of "error LNK2001: unresolved external symbol ...". I suspect that dlltest works because it doesn't link any of the affected functions.
I'm sad to have to tell you that the 64-bit builds of *all* projects except cryptlib (=cryptest, cryptopp) are broken and result in a bunch of "error LNK2001: unresolved external symbol ...". I suspect that dlltest works because it doesn't link any of the affected functions.
OK, so I had a chance to spend some time with this....
Microsoft documented some of the changes to the underlying MSBuild engine at http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx. They created a lot of problems.
*** TargetName and TargetExt ***
VS 2010 and above depend upon TargetName and TargetExt. Microsoft stated they would not set it based on OutputDirectory and OutputFile. What they don't say is VS2005/VS2008 *lack* the setting, so there's no way for use to fix it before the upgrade (and they refuse to set it after the upgrade).
*** Intermediate Directory Path ***
Over half the Intermediate Directories were simply wrong after the upgrade.
*** Name Mangling ***
It appears the algorithm to produce mangled names changed. We have at least one:
error LNK2019: unresolved external symbol "unsigned __int64 * CryptoPP::rdtable::Te"
(?Te@rdtable@CryptoPP@@3PA_KA) referenced in function
Rijndael_Enc_AdvancedProcessBlocks
x64\DLL_Output\Release\cryptopp.dll : fatal error LNK1120: 1 unresolved externals
I'll have to investigate this further.
*** Incorrect Architectures ***
I'm seeing a fair amount of this:
cryptopp.lib(cryptopp.dll) : fatal error LNK1112: module machine type 'X86' conflicts
with target machine type 'x64'
Even with the Intermediate directories fixed, its still managing to produce the wrong intermediate code, or place them in the wrong directories.
**********
its going to take time to find solutions to all the problems Microsoft created.
Jeff
Well, ... I already found the issue.I'm sad to have to tell you that the 64-bit builds of *all* projects except cryptlib (=cryptest, cryptopp) are broken and result in a bunch of "error LNK2001: unresolved external symbol ...". I suspect that dlltest works because it doesn't link any of the affected functions.
OK, so I had a chance to spend some time with this....
It's a project conversion error that removes the custom build steps for our .asm files. This makes the .asm not being assembled and integrated into the library, resulting in a linker failure as the necessary code is missing. This only affects x64 as x86 uses inline assembly. And it only occurred when migrating to VS2015, 2010 and 2012 worked just fine.
The workaround is to manually re-add the necessary commands.
It may also be the case that my system is the issue as it's often enough behaving abnormally.
Well, ... I already found the issue.I'm sad to have to tell you that the 64-bit builds of *all* projects except cryptlib (=cryptest, cryptopp) are broken and result in a bunch of "error LNK2001: unresolved external symbol ...". I suspect that dlltest works because it doesn't link any of the affected functions.
OK, so I had a chance to spend some time with this....
It's a project conversion error that removes the custom build steps for our .asm files. This makes the .asm not being assembled and integrated into the library, resulting in a linker failure as the necessary code is missing. This only affects x64 as x86 uses inline assembly. And it only occurred when migrating to VS2015, 2010 and 2012 worked just fine.
The workaround is to manually re-add the necessary commands.
It may also be the case that my system is the issue as it's often enough behaving abnormally.
Have you tested it against the 22 configurations provided in the solution (including the non-x64 ones)?
Well, ... I already found the issue.
It's a project conversion error that removes the custom build steps for our .asm files. This makes the .asm not being assembled and integrated into the library, resulting in a linker failure as the necessary code is missing. This only affects x64 as x86 uses inline assembly. And it only occurred when migrating to VS2015, 2010 and 2012 worked just fine.
On Sunday, October 11, 2015 at 12:45:12 PM UTC-4, jean-pierre.muench wrote:Well, ... I already found the issue.
It's a project conversion error that removes the custom build steps for our .asm files. This makes the .asm not being assembled and integrated into the library, resulting in a linker failure as the necessary code is missing. This only affects x64 as x86 uses inline assembly. And it only occurred when migrating to VS2015, 2010 and 2012 worked just fine.
You'll have to forgive my ignorance here....
Below is what I see after a VCUpgrade and subsequent build. It appears the custom build steps are present for x64.
When I check for the symbol using dumpbin:
C:\Program Files (x86)\Microsoft Visual Studio 11.0>cd C:\...\cryptopp-5.6.3-vs2012\x64\Output\Debug
C:\...\cryptopp-5.6.3-vs2012\x64\Output\Debug>dumpbin /SYMBOLS cryptlib.lib | findstr "DEFAULT_CHANNEL"
1874 00000000 SECT71D notype External | ?DEFAULT_CHANNEL@CryptoPP@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@B (class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const CryptoPP::DEFAULT_CHANNEL)
...
C:\...\cryptopp-5.6.3-vs2012\x64\Output\Debug>dumpbin /SYMBOLS cryptlib.lib | findstr "rdtable"
00E 00000000 UNDEF notype External | ?Te@rdtable@CryptoPP@@3PA_KA (unsigned __int64 * CryptoPP::rdtable::Te)
How exactly, did you resolve the issue?