Am 11.10.2015 um 02:50 schrieb Jeffrey Walton: > > 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.... 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. 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. > > 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). What are we actually doing that would bother us here? I /think/ the conversion actually sets the correct entries for us here. > > *** Intermediate Directory Path *** > > Over half the Intermediate Directories were simply wrong after the > upgrade. Which? The x64 ones? I personally never experienced problems in that direction... > > *** 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. That one looks really strange. > > *** 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. so here the "strange" directories start breaking things? Interesting. I'll also investigate this one soon(tm). BR JPM > > ********** > > its going to take time to find solutions to all the problems Microsoft > created. > > 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] > <mailto:[email protected]>. > For more options, visit https://groups.google.com/d/optout. -- -- 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.
