randombit / botan

Cryptography Toolkit
https://botan.randombit.net
BSD 2-Clause "Simplified" License
2.6k stars 570 forks source link

NMAKE : fatal error U1077 #2377

Closed timosmd closed 4 years ago

timosmd commented 4 years ago

Hello,

I am having trouble compiling botan 2.12.1 although it worked perfectly fine 2 weeks ago...

It's failing with the following errors:

 cl  /MD /bigobj /EHs /GR /D_ENABLE_EXTENDED_ALIGNED_STORAGE /D_WIN32_WINNT=0x0600 /std:c++latest -DBOTAN_IS_BEING_BUILT /W4 /wd4250 /wd4251 /wd4275  /Ibuild\include /Ibuild\include\external /nologo /c src/lib/pubkey/xmss/xmss_privatekey.cpp /Fobuild\obj\lib\pubkey_xmss_privatekey.obj
xmss_privatekey.cpp
build\include\botan/internal/thread_pool.h(57): error C2039: "result_of" ist kein Member von "std".
D:\Programme\MS Visual Studio\VC\Tools\MSVC\14.26.28801\include\future(37): note: Siehe Deklaration von "std"
build\include\botan/internal/thread_pool.h(57): error C2653: "result_of": Keine Klasse oder Namespace
build\include\botan/internal/thread_pool.h(57): error C2146: Syntaxfehler: Fehlendes ">" vor Bezeichner "type"
src/lib/pubkey/xmss/xmss_privatekey.cpp(98): warning C4334: "<<": Das Ergebnis der 32-Bit-Verschiebung wurde implizit in 64 Bits konvertiert. (War eine 64-Bit-Verschiebung vorgesehen?)
src/lib/pubkey/xmss/xmss_privatekey.cpp(118): warning C4267: "Initialisierung": Konvertierung von "size_t" nach "uint8_t", Datenverlust möglich
src/lib/pubkey/xmss/xmss_privatekey.cpp(143): error C2672: "Botan::Thread_Pool::run": keine übereinstimmende überladene Funktion gefunden
src/lib/pubkey/xmss/xmss_privatekey.cpp(150): error C2893: Fehler beim Spezialisieren der Funktionsvorlage "unknown-type Botan::Thread_Pool::run(F &&,Args &&...)".
build\include\botan/internal/thread_pool.h(57): note: Siehe Deklaration von "Botan::Thread_Pool::run"
src/lib/pubkey/xmss/xmss_privatekey.cpp(150): note: Mit den folgenden Vorlagenargumenten:
src/lib/pubkey/xmss/xmss_privatekey.cpp(150): note: "F=tree_hash_subtree_fn_t &"
src/lib/pubkey/xmss/xmss_privatekey.cpp(150): note: "Args={Botan::XMSS_PrivateKey *, std::reference_wrapper<_Ty>, size_t, size_t, std::reference_wrapper<_Ty>, std::reference_wrapper<_Ty>}"
src/lib/pubkey/xmss/xmss_privatekey.cpp(163): warning C4334: "<<": Das Ergebnis der 32-Bit-Verschiebung wurde implizit in 64 Bits konvertiert. (War eine 64-Bit-Verschiebung vorgesehen?)
src/lib/pubkey/xmss/xmss_privatekey.cpp(165): warning C4334: "<<": Das Ergebnis der 32-Bit-Verschiebung wurde implizit in 64 Bits konvertiert. (War eine 64-Bit-Verschiebung vorgesehen?)
src/lib/pubkey/xmss/xmss_privatekey.cpp(169): warning C4267: "Argument": Konvertierung von "size_t" nach "uint32_t", Datenverlust möglich
src/lib/pubkey/xmss/xmss_privatekey.cpp(182): error C2672: "Botan::Thread_Pool::run": keine übereinstimmende überladene Funktion gefunden
src/lib/pubkey/xmss/xmss_privatekey.cpp(190): error C2893: Fehler beim Spezialisieren der Funktionsvorlage "unknown-type Botan::Thread_Pool::run(F &&,Args &&...)".
build\include\botan/internal/thread_pool.h(57): note: Siehe Deklaration von "Botan::Thread_Pool::run"
src/lib/pubkey/xmss/xmss_privatekey.cpp(190): note: Mit den folgenden Vorlagenargumenten:
src/lib/pubkey/xmss/xmss_privatekey.cpp(190): note: "F=rnd_tree_hash_fn_t &"
src/lib/pubkey/xmss/xmss_privatekey.cpp(190): note: "Args={Botan::XMSS_PrivateKey *, std::reference_wrapper<_Ty>, std::reference_wrapper<_Ty>, std::reference_wrapper<_Ty>, std::reference_wrapper<_Ty>, std::reference_wrapper<const std::vector<uint8_t,Botan::secure_allocator<uint8_t>>>, std::reference_wrapper<_Ty>}"
src/lib/pubkey/xmss/xmss_privatekey.cpp(201): warning C4267: "Argument": Konvertierung von "size_t" nach "uint32_t", Datenverlust möglich
src/lib/pubkey/xmss/xmss_privatekey.cpp(243): warning C4267: "Argument": Konvertierung von "size_t" nach "uint32_t", Datenverlust möglich
src/lib/pubkey/xmss/xmss_privatekey.cpp(252): warning C4267: "Argument": Konvertierung von "size_t" nach "uint32_t", Datenverlust möglich
src/lib/pubkey/xmss/xmss_privatekey.cpp(258): warning C4267: "Argument": Konvertierung von "size_t" nach "uint32_t", Datenverlust möglich
NMAKE : fatal error U1077: ""D:\Programme\MS Visual Studio\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\cl.EXE"": Rückgabe-Code "0x2"
Stop.
randombit commented 4 years ago

I think the problem is your use of /std:c++latest - std::result_of is removed in C++20, in favor of std::invoke_result, but that isn't available until C++17 and for 2.x we are maintaining C++11 compatibility.

timosmd commented 4 years ago

Thanks for your answer - this seems to be the reason.